X

C#でプロジェクトオイラーを解く(問題40「チャンパーノウン定数」)

どーも、みつおです。

問題

正の整数を順に連結して得られる以下の10進の無理数を考える:

0.123456789101112131415161718192021…

小数第12位は1である.

dnで小数第n位の数を表す. d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 を求めよ.

出典:Problem40

解答

using System;

namespace Problem40
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Solve());
            Console.ReadLine();
        }

        private static int Solve()
        {
            int ret = 0;
            int i = 1;
            string str = "";

            //正の整数の連結
            while (true)
            {
                str += i.ToString();
                i++;
                if (str.Length > 1000000) break;
            }

            char[] chArray = str.ToCharArray();

            //小数第n位の数を取得
            int i1, i10, i100, i1000, i10000, i100000, i1000000;
            i1 = int.Parse(chArray[0].ToString());
            i10 = int.Parse(chArray[9].ToString());
            i100 = int.Parse(chArray[99].ToString());
            i1000 = int.Parse(chArray[999].ToString());
            i10000 = int.Parse(chArray[9999].ToString());
            i100000 = int.Parse(chArray[99999].ToString());
            i1000000 = int.Parse(chArray[999999].ToString());
            
            ret = i1 * i10 * i100 * i1000 * i10000 * i100000 * i1000000;

            return ret;
        }
    }
}

 

出力

210

みつお: