PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 479 / 増加する根

式 1/x = (k/x)^2(k+x^2) - kx の3つの解(実数か複素数)を a_k, b_k, c_k で表す。

たとえば k = 5 のとき,{a5, b5, c5} はおよそ
{5.727244, -0.363622+2.057397i, -0.363622-2.057397i}
となる。

1 ≤ p, k ≤ n をみたすすべての整数 p, k に対して

 S(n)= \sum (a_k+b_k)^p(b_k+c_k)^p(c_k+a_k)^p

としよう。面白いことに S(n) は常に整数となる。たとえば S(4)=51160 である。

S(106) modulo 1,000,000,007 を求めよ。

Problem 479 - Project Euler

大学入試みたいな問題でした。簡単のため a_k=a などと略記します。与えられた方程式は

 kx^3-k^2 x^2+x-k^3=0

解と係数の関係から a+b+c=k がわかります。

 \left\{(a+b)(b+c)(c+a)\right\}^p=\left\{(k-c)(k-a)(k-b)\right\}^p

 f(x)=kx^3-k^2 x^2+x-k^3 とおくと,中括弧の中身は

 f(k)/k=1-k^2

p 乗して,p について和をとります。

 \dfrac{1-k^2}{k^2}\left\{1-(1-k^2)^n\right\}

これを Mathematica が処理しやすい形に直して計算しました。