トップページに戻る    次のC++のサンプルへ    前のC++のサンプルへ

Problem4 3桁の数の積で表される回文数のうち最大のもの

問題

左右どちらから読んでも同じ値になる数を回文数という。
2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。
では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。


ソース

#include <iostream>
#include <Windows.h>

void main()
{
    int kariMax = 0;
    char MaxStr[100];

    for (int I = 100; I <= 999; I++) {
        for (int J = I; J <= 999; J++) {
            int wkInt = I * J;

            char ascStr[100];
            wsprintf(ascStr,"%d",wkInt);

            char descStr[100];
            strcpy_s(descStr,ascStr);
            _strrev(descStr);

            if (strcmp(ascStr,descStr)==0 && kariMax < wkInt){
                kariMax = wkInt;
                wsprintf(MaxStr,"%d * %d = %d",I,J,wkInt);
            }
        }
    }
    std::cout << MaxStr << std::endl;
}


実行結果

913 * 993 = 906609


解説

MSDN --- _strrev関数でchar型の配列を反転させてます。