Project Euler [Problem 48]

剰余は維持されるよという話じゃな

暗号ではおなじみ。

問題

Self powers

The series, 11 + 22 + 33 + ... + 1010 = 10405071317.

Find the last ten digits of the series, 11 + 22 + 33 + ... + 10001000.

私訳

自身の冪

1から10までのそれ自身の冪級数は, 11 + 22 + 33 + ... + 1010 = 10405071317 である。

以下の冪級数の下10桁を求めよ。 11 + 22 + 33 + ... + 10001000.

解答方針

1010 で割った剰余を求めればよい。 a*b mod m = (a mod m) * (b mod m) であることを利用する。

あとは、計算時間を早くするために k 乗を log k で実行するくらいか。