トップページに戻る    次の増井さんの書籍の問題へ

Q01 10進数で回文


C#のソース

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        //偶数は、2進数で1の位が0なので、検証しない
        for (int I = 11; I < int.MaxValue; I += 2) {
            string DecStr = I.ToString();
            string OctStr = Convert.ToString(I, 8);
            string BinStr = Convert.ToString(I, 2);

            //回文かを判定
            Predicate<string> IsKaibun =
                pStr => pStr == new string(pStr.Reverse().ToArray());

            if (IsKaibun(DecStr) == false) continue;
            if (IsKaibun(OctStr) == false) continue;
            if (IsKaibun(BinStr) == false) continue;

            Console.WriteLine("解を発見");
            Console.WriteLine("10進数で{0}。8進数で{1}。2進数で{2}",
                DecStr, OctStr, BinStr);
            break;
        }
    }
}


実行結果

解を発見
10進数で585。8進数で1111。2進数で1001001001


解説

小さい数から順に検証してます。