トップページに戻る
   次の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型の配列を反転させてます。