SQLでProject Euler − Problem 04
PostgreSQL なら文字列をテーブルに変換出来るからもっとスマートになりそう。
SQL Server だと桁数を知ってる上での書き方になります。
他に良い方法あるかな?
/** 【問題】 左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。 では、3桁の数の積で表される回文数のうち 最大のものはいくらになるか。 **/ WITH temp(x) AS ( SELECT 100 UNION ALL SELECT t.x + 1 FROM temp t WHERE t.x <= 999 ) SELECT ta.x * tb.x x INTO #temp FROM temp ta CROSS JOIN temp tb OPTION (MAXRECURSION 0) SELECT m.x INTO #temp2 FROM ( SELECT s.x x , cast(s.x as varchar(7)) y , len(cast(s.x as varchar(7))) l FROM #temp s ) m WHERE substring(y,1,1) = substring(y,l,1) AND substring(y,2,1) = substring(y,l-1,1) AND substring(y,3,1) = substring(y,l-2,1) SELECT max(x) FROM #temp2 DROP TABLE #temp,#temp2