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

Problem16 2の1000乗の各数字の合計

問題

2の15乗=32768であり、これの各数字の合計は 3+2+7+6+8=26となる。
同様にして、2の1000乗の各数字の合計を求めよ。


ソース

using System;
using System.Linq;

class Program
{
    //const int Jyousuu = 15;
    const int Jyousuu = 1000;

    static void Main()
    {
        var wkArr = new int[Jyousuu + 2];
        wkArr[1] = 2;
        for (int I = 1; I <= Jyousuu - 1; I++) {
            for (int J = 1; J <= wkArr.GetUpperBound(0); J++) {
                wkArr[J] *= 2;
            }
            for (int J = 1; J <= wkArr.GetUpperBound(0); J++) {
                if (wkArr[J] >= 10) {
                    wkArr[J + 1] += wkArr[J] / 10;
                    wkArr[J] %= 10;
                }
            }
        }
        Console.WriteLine(wkArr.Sum());
    }
}


実行結果

1366


解説

繰り上がり値を順番に求めていってます。