トップページに戻る    次の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#での解