Project Euler 492
Project Euler 492
题目
Exploding sequence
Define the sequence $a_1, a_2, a_3, \dots$ as:
$a_1 = 1$
$a_{n+1} = 6a_n^2 + 10a_n + 3$ for $n \ge 1$.
Examples:
$\begin{aligned}
&a3 = 2359\
&a_6 = 269221280981320216750489044576319\
&a_6 \bmod 1 000 000 007 = 203064689\
&a{100} \bmod 1 000 000 007 = 456482974
\end{aligned}$
Define $B(x,y,n)$ as $\sum (a_n \bmod p)$ for every prime $p$ such that $x \le p \le x+y$.
Examples:
$\begin{aligned}
&B(10^9, 10^3, 10^3) = 23674718882\
&B(10^9, 10^3, 10^{15}) = 20731563854
\end{aligned}$
Find $B(10^9, 10^7, 10^{15})$.
解决方案
构造一个新序列$b_n=6a_n+5$,并且回代到$a_n$的递推式中,那么得到$b_n$的递推式:
可以发现$b_n$的式子比起$a_n$消去了一次项,并且$b_n^2$的项系数恰好为$1$。
根据$b_n$的递推式,再联想到如下关于$x$的等式:
如果将$b_1$写成形如$b_1=k+\dfrac{1}{k}$的形式,那么$b_n$的通项公式可以很轻易地写出来:
求解$k+\dfrac{1}{k}=11$,得到$k=\dfrac{11\pm 3\sqrt{13}}{2}$。
接下来参考两种情况:
- 如果$13$是$p$的二次剩余,那么计算出$13$的二次剩余后,直接代入计算$k$的值即可。
- 如果$13$不是$p$的二次剩余,那么接下来这个地方参考了Thread的一些内容:考虑在域$\mathbb{Z}_p[\sqrt{13}]$进行运算,这个域的阶为$p^2-1$。这个域的乘法运算性质为:$(x_1,y_1)\times(x_2,y_2)=(x_1x_2+13y_1y_2,x_1y_2+x_2y_1)$,相当于是$x_1+y_1\sqrt{13}$和$x_2+y_2\sqrt{13}$这两个数相乘。那么根据这个运算性质,$\left(\dfrac{11}{2},\dfrac{3}{2}\right)^{2^{n-1}}$很容易就能够计算出来。$\left(\dfrac{11}{2},\dfrac{3}{2}\right)$在$\mathbb{Z}_p[\sqrt{13}]$上的逆元是$\left(\dfrac{11}{2},-\dfrac{3}{2}\right)$,具有共轭的性质。最终$\left(\dfrac{11}{2},\dfrac{3}{2}\right)^{2^{n-1}}+\left(\dfrac{11}{2},-\dfrac{3}{2}\right)^{2^{n-1}}$的$y$值一定为$0$,求出的$x$值即为最终的$b_n$。
计算出$b_n$后,回代得到$a_n=\dfrac{b_n-5}{6}$,直接计算即可。
代码
1 |
|