bzoj3309

来源:互联网 发布:讨厌大野智 知乎 编辑:程序博客网 时间:2024/04/28 08:38

题意:
定义f(n)为n所含质因子的最大幂指数。求
ni=1mj=1f(gcd(i,j))
T<=10000
1<=n,m<=10^7
题解:
先大力化式子
枚举i,j的gcd
nd=1f(d)ndi=1mdj=1ϵ((i,j))
nd=1f(d)ndi=1mdj=1k|i,k|jμ(k)
nk=1μ(k)nkd=1f(d)ndki=1mdkj=1
枚举D=dk
nD=1nDmDd|Df(d)μ(Dd)
g=fμ
nD=1nDmDg(D)
算出g后就可以分块解决。
觉得g不是一个积性函数,看了一眼题解(捂脸)“由μf性质可得”
那就大力推一下吧。。
n=pk11pk22...pktt
k1>=k2>=…>=kt
我们只考虑非0的μ和对应的f
当多个ki值相等的情况,我们把它当作用最小那个i的情况
使f取值为k1,强制p1不选,贡献为
k1t1i=0(1)iCit1
k1(11)t1
似乎为0
注意如果对于kj,存在ki>kj,那kj永远不会作为f,因为ki-1>=kj
所以,kj能做f的情况为k1=k2=…=kj且k1到kj-1都被选了
类似,贡献为
(1)j1kjtji=0(1)iCit1
(1)j1kj(11)tj
如果存在k1=k2=…=kj,kj>kj+1那强制p1到pj都选后,后面所有情况的f依然为k1-1,后面所有情况贡献为
(1)j(k11)tki=0(1)iCit1
(1)jkj(11)tj
上面所有式子在j不等于t时都为0
唯一不为0的情况就是k1=k2=…=kt时的
(1)t1kt(11)tt
以及全部p都被选后的
(1)t(kt1)
相加即为(1)t+1
于是可以用线性筛求出g。
具体来说就是对于每个数n求出他的最小质因子p最多有k次方,记为a(n)
比较a(n)a(npk)即可从g(npk)g(n)
这是一个递推的关系,用心感受一下就知道很对了。。

0 0
原创粉丝点击