Project Euler 402
Project Euler 402
题目
Integer-valued polynomials
It can be shown that the polynomial \(n^4 + 4n^3 + 2n^2 + 5n\) is a multiple of \(6\) for every integer \(n\). It can also be shown that \(6\) is the largest integer satisfying this property.
Define \(M(a, b, c)\) as the maximum \(m\) such that \(n^4 + an^3 + bn^2 + cn\) is a multiple of \(m\) for all integers \(n\). For example, \(M(4, 2, 5) = 6\).
Also, define \(S(N)\) as the sum of \(M(a, b, c)\) for all \(0 < a, b, c \le N\).
We can verify that \(S(10) = 1972\) and \(S(10000) = 2024258331114\).
Let \(F_k\) be the Fibonacci sequence:
\(F_0 = 0, F_1 = 1\) and
\(F_k = F_{k-1} + F_{k-2}\) for \(k \ge 2\).
Find the last \(9\) digits of \(\sum S(F_k)\) for \(2 \le k \le 1234567890123\).
解决方案
令\(p(n)=n^4 + an^3 + bn^2 + cn,m=10^9\)。那么可以得到\(\gcd(p(-1)+p(1),p(-2)+p(2))=\gcd(2b+2,8b+32)=2\gcd(b+1,12)\)。
也就是说,\(M\in\{1,2,3,4,6,8,12,24\}\)。
由于\(24=3\cdot 2^3\),经过多次打表实验,可以得到如下结论:
\(\begin{aligned} &3\mid M(a,b,c)\Longleftrightarrow b\equiv 2\pmod 3 \land(a+c)\equiv 0\pmod 3;\\ &2\mid M(a,b,c)\Longleftrightarrow (a+b+c)\equiv 1\pmod 2;\\ &4\mid M(a,b,c)\Longleftrightarrow a\equiv c\equiv0\pmod 2\land (a+b+c)\equiv 3\pmod 4\\ &8\mid M(a,b,c)\Longleftrightarrow a\equiv c\equiv2\pmod 4\land (a+b+c)\equiv 7\pmod 8\\ \end{aligned}\)
那么,接下来的任务是以\(O(1)\)的时间复杂度计算\(S(N)\)。由于\(a,b,c\)的值都是模\(24\)相等的,因此我们可以将整个\(N\times N\times N\)的输入以\(24\times24\times24\)的大小进行划分。令\(q=\left\lfloor\dfrac{N}{24}\right\rfloor,r=N\%24\),那么每一个\(24\times24\times24\)方块内部答案的总和都是相等的。
因此,对于模数\(m\),序列\(S(n)\% m\)的周期为\(24m\)。可知序列\(F_n\%m\)也是周期性的,并且\(24m\)一定是其中一个周期,因此我们考虑枚举\(F_n\%24m'\)的循环节。
此外,由于\(m=2^9\cdot 5^9\),因此我们可以分成两部分去求解这个问题:分别求解\(S(n)\% 2^9\)和\(S(n)\% 5^9\)的值后,再用中国剩余定理进行合并,最终得到答案。
代码
1 |
|