【欧拉计划】17. Number letter counts
(本题取 $n=1000$)
【思路】本题细节较多,可先预处理一些数的字母个数,这样后面的数就可以由前面递推而来。时间复杂度为 $\mathcal O(n)$。
【欧拉计划】17. Number letter counts
(本题取 $n=1000$)
【思路】本题细节较多,可先预处理一些数的字母个数,这样后面的数就可以由前面递推而来。时间复杂度为 $\mathcal O(n)$。
【思路】Python
可简单模拟,但在 C/C++
中需用高精度:
(本题取 $n=20$)
【思路】$\mathcal O(n^2)$ DP 即可:
【欧拉计划】14. Longest Collatz sequence
(本题取 $n=1000000$,规定 $\text{col}_n$ 为 $n$ 的序列长度)
【思路】直接 $\mathcal O(n \max {\text{col}_i})$ 求解:
【思路】C/C++
应用高精度,但 Python
可直接计算。同时还可以利用整型和字符串之间的转换和子串功能求解:
【欧拉计划】12. Highly divisible triangular number
(本题取 $n$ 为第一个因数个数大于 $500$ 的三角形数 $76576500$)
【思路】依次枚举三角形数,每次 $\mathcal O(n)$ 求所有因数,因数个数大于 $500$ 就中断。时间复杂度为 $\mathcal O(n^2)$。
【优化】如果整数 $x$ 有因数 $i$,那么 $\dfrac{x}{i}$ 必然也是它的因数。因此可以把统计因数个数的时间复杂度降到 $\mathcal O(\sqrt n)$,总体优化到 $\mathcal O(n \sqrt n)$:
【欧拉计划】11. Largest product in a grid
(本题取 $n=20$,$m=4$,$d=8$)
【思路】先 $O(n^2)$ 枚举起始数字,然后 $\mathcal O(md)$ 枚举所有方向的所有数字。时间复杂度为 $\mathcal O(n^2md)$:
(本题取 $n=2000000$)
【思路】$\mathcal O(n)$ 欧拉筛:
【欧拉计划】9. Special Pythagorean triplet
(本题取 $n=1000$)
【思路】$\mathcal O(n^3)$ 分别枚举 $a,b,c$ 并判断。
【优化】由于 $a,b,c$ 中的其中一个值可以由另外两个得到,因此可省去第三重循环,时间复杂度优化为 $\mathcal O(n^2)$:
【欧拉计划】8. Largest product in a series
(本题取 $n=1000$,m=13$)
【思路】$\mathcal O(nm)$ 暴力枚举: