トップページに戻る
次のProblemへ
前のProblemへ
Problem4 3桁の数の積で表される回文数のうち最大のもの
左右どちらから読んでも同じ値になる数を回文数という。
2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。
では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。
SQL
declare
WKInt pls_Integer;
ascVal VarChar2(6);
descVal VarChar2(6);
maxKaibunsuu pls_Integer :=0;
maxStr VarChar2(20);
function strRev(pTarget VarChar2) return VarChar2 Is
WillReturn VarChar2(6);
begin
for I in 1..Length(pTarget) Loop
WillReturn := WillReturn || substr(pTarget,-I,1);
end Loop;
return WillReturn;
end;
begin
for I in 100..999 Loop
for J in I..999 Loop
WKInt := I*J;
ascVal := to_char(WKInt);
descVal := strRev(ascVal);
if ascVal = descVal then
if maxKaibunsuu < WKInt then
maxKaibunsuu := WKInt;
maxStr := to_char(I) || '*' || to_char(J) || '=' || ascVal;
end if;
end if;
end Loop;
end Loop;
DBMS_Output.Put_Line(maxStr);
end;
/
実行結果
913*993=906609
解説
文字列を反転する内部関数を作成してます。
C#での解