码迷,mamicode.com
首页 > 其他好文 > 详细

P4449 于神之怒加强版

时间:2019-12-11 09:38:51      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:线性   mat   怎么办   inline   mit   怎么   play   other   gcd   

题目大意:


\[\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j)^k\]

首先很套路地推出
\[ret=\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum\limits_{t|T}t^k\mu(\frac{T}{t})\]
然后我们发现,前面直接除法分块就好了,关键是后面怎么办

我们设
\[f(T)=\sum\limits_{t|T}t^k\mu(\frac{T}{t})\]
很容易发现,它是一个积性函数可以线性筛,关键在于处理\(prime|i\)的情况

考虑莫比乌斯函数性质:对于\(T\)的某个质因子\(p\)的最高次\(p^x\),有贡献的部分其实只有当\(t=p^x\)\(t=p^{x-1}\)时,因为其他情况下\(\mu\)的值都为\(0\)

所以质因子\(p\)对答案的贡献是\((p^{kx}-p^{k*(x-1)})*others\)

提出\(p^{k*(x-1)}\)得到\((p^k-1)*p^{k*(x-1)}*others\)

类比推出对于\(p\)最高次为\(p^{x-1}\)的某个数字,其贡献为\((p^k-1)*p^{k*(x-2)}*others\)

所以得出:当\(prime|i\)时,\(f(i*prime)=f(i)*prime^k\)

然后就可以线性筛预处理,除法分块回答啦(???)

P4449 于神之怒加强版

标签:线性   mat   怎么办   inline   mit   怎么   play   other   gcd   

原文地址:https://www.cnblogs.com/knife-rose/p/12020247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!