题目大意
给定a,b,c<=2000,求 ∑ai=1∑bj=1∑ck=1d(ijk) ,其中 d(n)表示n的因子数量
分析
【搜索|[CF235E]Number Challenge】嗯…题解给出一种鬼畜的解法,它事实上是能过的,我还不知道怎么分析复杂度。
我们知道d()是积性函数嘛,那么我们从大到小考虑质数,记忆化搜索。设f(a,b,c,pt)表示考虑到第pt个质数,三个循环的上界为a,b,c的式子的值。那么很显然 f(a,b,c,pt)=∑f(apri[pt]x,bpri[pt]y,cpri[pt]z,pt?1)?(x+y+z+1) 。然后用哈希存一下就过了…
注意边界条件,当pt到达0,说明所有的质数都考虑过了,那么我们返回1即可,因为即使上界不为1,那些数我们也取不了,因为所有质数都考虑过了。
用map超时,考试千万不要乱用…
另外有两种做法,一种是反演,一种是定理。
代码
#include
#include
#include
#include
#include
#include
推荐阅读
- Codeforces|Codeforces Round #605 (Div. 3) D. Remove One Element
- 题解|【HNOI2017】大佬-dalao
- jzoj|【GDOI2018模拟7.8】质数 乱搞+哥德巴赫猜想
- #|蓝桥杯 - [2013年第四届真题]危险系数(割点)
- 暴力|最大最小公倍数
- 搜索|Wannafly模拟赛3-B 贝伦卡斯泰露(DFS)
- 思维题|Maze(CodeForces - 377A )(思维,广搜)
- online|Codeforces #245 (Div. 2)C. Xor-tree(DFS&&贪心