Project Euler 120

プロジェクトオイラー
http://projecteuler.net/index.php

Q120.
(a-1)n + (a+1)nのa2の剰余のnを振ったときの最大値をrmaxとすると、3 ≤ a ≤ 1000での∑rmax

nが偶数・奇数で分けると、

(a-1)n + (a+1)n ≡ 2 (mod a2) (n : even)
(a-1)n + (a+1)n ≡ 2na (mod a2) (n : odd)

nは奇数のみ考えればよい。
aが奇数のとき、rmax = (a-1)a、偶数のとき、rmax = (a-2)aとなる。さらに計算を進めると、電卓レベルになる。



N = 1000
n = (N - 1) / 2
m = N / 2
print n * (n + 1) * (4 * n + 5) / 3 + 4 * m * (m * m - 1) / 3