Project Euler 745
Project Euler 745
题目
Sum of Squares II
For a positive integer, \(n\), define \(g(n)\) to be the maximum perfect square that divides \(n\).
For example, \(g(18) = 9\), \(g(19) = 1\).
Also define
\[\displaystyle S(N) = \sum_{n=1}^N g(n)\]
For example, \(S(10) = 24\) and \(S(100) = 767\).
Find \(S(10^{14})\). Give your answer modulo \(1\,000\,000\,007\).
解决方案
可以知道,对于所有无平方因子数\(n\),都有\(g(nk^2)=k^2\),因为\(g(nk^2)\)只取决于平方因子\(k^2\)。
令\(N=10^{14}\),那么有
\[S(N)=\sum_{i=1}^{\lfloor\sqrt{N}\rfloor} i^2\cdot f\left(\left\lfloor\dfrac{N}{i^2}\right\rfloor\right)\]
其中\(f(n)\)表示\(n\)以内的无平方因子数个数。
\(f(n)\)可以以\(O(\sqrt{n})\)的时间复杂度计算,在193题已经有提及。那么本题计算\(S(N)\)的时间复杂度为\(O(\sqrt{N}\log N)\)。
\(O(\sqrt{N})\)的做法待补。
代码
1 |
|