ccpc2017杭州站 B

链接

http://acm.hdu.edu.cn/showproblem.php?pid=6265

题意

给定n的质因数分解情况

计算这个函数的值,d是n的约数

\sum (n/d) * phi(d) 

首先我们可以证明这个函数是积性函数

方法1

phi(n)积性函数,1/n积性函数

他们的乘积也是积性函数

由定理知道(见贾志鹏ppt)

\sum phi(d)/d 也是积性函数,d|n

那么前面乘个系数n,这个函数也是积性函数

\sum (n/d) * phi(d) 

方法2

直接由狄利克雷卷积的知识

f(n)=n,g(n)=phi(n)

\sum f(n)*g(n/d)

\sum g(n)*f(n/d)

都是积性函数

这里使用的是下面的这个

将f(n),g(n)带入即可证明他为积性函数

 

计算这个函数

因为是积性函数(非完全),所以可以拆分成下面的式子

\large f(n)=f(p_1^q_1)*f(p_2^q_2)*...*f(p_n^q_n)   //  csdn这个公式编辑器真垃圾

于是我们只要找到\large f(p^q),(p为素数)的计算方法即可的计算方法即可,p为素数

\large f(p^q)=p^q* \sum phi(d)/d

我们容易知道p^q的约数只有p,p2,p3,...,p^n

由欧拉函数的计算公式知道

\large phi(n)=n*\prod (p_i-1)/pi,其中pi为素因子

那么这样就好计算了

不妨设g(x)=phi(x)/x

\large g(p)=p* ((p-1)/p)/p=(p-1)/p

\large g(p^2)=p^2*((p-1)/p)/p^2=(p-1)/p

...........

\large g(p^q)=p^q*((p-1)/p)/p^q=(p-1)/p

因为p1,p2,p3....pn的素因子只有p一个

所以上面所有的式子加起来=q*(p-1)/p

所以

\large f(p^q)=p^q* \sum phi(d)/d=p^q*[q*(p-1)/p]

我们得到每个单项的答案后,那么最后总的答案就是

\large ans=\prod p^q*[q*(p-1)/p]

p^q用快速幂解决

1/p用逆元算即可

上代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值