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

Cマガ電脳クラブ(第006回) りばーす・リバース

問題

741という数に注目してみよう。まず3で割る。

741
--- = 247
 3

次に、この247を逆から読む。247 (逆転) → 742
そして、1を引く。742 - 1 = 741
なんともとの741に戻ってしまった。

ここで問題。"ある数を3で割り、その結果の数字を逆転して、それから1を引いたらもとの数と一致する"
という正の数を、この741以外にひとつ見つけてください。
もちろん3桁とは限らない。


ソース

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var sw = System.Diagnostics.Stopwatch.StartNew();

        for (int I = 3; I < int.MaxValue; I += 3) {
            int wkInt = I;
            wkInt /= 3;
            string wkStr = wkInt.ToString();
            wkInt = int.Parse(new string(wkStr.ToCharArray().Reverse().ToArray()));
            wkInt--;

            if (I == wkInt) {
                Console.WriteLine("{0}。解として{1}を発見しました。", sw.Elapsed, I);
                if (I != 741) return;
            }
        }
    }
}


実行結果

00:00:00.0119540。解として741を発見しました。
00:00:09.6576232。解として7425741を発見しました。


解説

LINQのReverseメソッドでChar型の配列を反転させてます。