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

Problem48 1000の1000乗の最後の10桁

問題

次の式は、1の1乗 + 2の2乗 + 3の3乗 + ... + 10の10乗 = 10405071317 である。
では、1の1乗 + 2の2乗 + 3の3乗 + ... + 1000の1000乗 の最後の10桁を求めよ。


ソース

using System;

class Program
{
    //const long TargetVal = 10;
    const long TargetVal = 1000;

    static void Main()
    {
        long SumVal = 0;

        for (long I = 1; I <= TargetVal; I++) {
            long wkSumVal = 1;
            for (long J = 1; J <= I; J++) {
                wkSumVal *= I;
                wkSumVal %= 10000000000;
            }
            SumVal += wkSumVal;
            SumVal %= 10000000000;
        }
        Console.WriteLine("Answer={0}", SumVal);
    }
}


実行結果

Answer=9110846700


解説

順に計算しつつ剰余を求めて、不要桁を捨ててます。