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

模板 - 数学 - 数论 - 莫比乌斯反演 - 2

时间:2019-03-08 12:41:33      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:sum   数论   log   构造   acm   ==   article   一个   .net   

示例:

1.经典问题 求 $f(x,n,m)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==x]$ :

答案: $f(x,n,m) = \sum\limits_{k=1}\mu(k){\lfloor{\frac{n}{kx}}}\rfloor{\lfloor{\frac{m}{kx}}\rfloor}$

 

构造: $F(x,n,m) = \sum\limits_{x|d}f(d) = \sum\limits_{k=1}f(kx) =\sum\limits_{k=1}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==kx] = {\lfloor{\frac{n}{x}}}\rfloor{\lfloor{\frac{m}{x}}\rfloor}$ (只要 $i,j$ 都是 $x$ 的倍数, $gcd(i,j)$ 一定是某个 $x$ 的 $k$ 倍)

反演: $f(x,n,m) = \sum\limits_{x|d}\mu(\frac{d}{x})F(d) = \sum\limits_{k=1}\mu(k)F(kx) = \sum\limits_{k=1}\mu(k){\lfloor{\frac{n}{kx}}}\rfloor{\lfloor{\frac{m}{kx}}\rfloor}$

当 $kx>min(n,m)$ 的时候 $f(kx)=0$

 

当 $x=1$ 时,代入公式得 $f(1,n,m) = \sum\limits_{k=1}\mu(k){\lfloor{\frac{n}{k}}}\rfloor{\lfloor{\frac{m}{k}}\rfloor}$ ,所以 $f(x,n,m)=f(1,\lfloor\frac{n}{x}\rfloor,\lfloor\frac{m}{x}\rfloor)$

 

2.经典问题求 $f_2(n,m) = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j)$ :

答案:$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j) = \sum\limits_{x=1}^{}\mu(x){\lfloor{\frac{n}{kx}}}\rfloor{\lfloor{\frac{m}{kx}}\rfloor}$

 

这一次我们要求所有的 gcd 的和,显然所求为 $f_2(n,m) = \sum\limits_{x=1}xf(x,n,m)$ 。也就是所有的 gcd 的个数乘上这个gcd本身的值。

 $f_2(n,m) = \sum\limits_{x=1}xf(x,n,m) = \sum\limits_{x=1}xf(1,\lfloor\frac{n}{x}\rfloor,\lfloor\frac{m}{x}\rfloor) = \sum\limits_{x=1}x \sum\limits_{k=1}\mu(k){\lfloor{\frac{n}{k}}}\rfloor{\lfloor{\frac{m}{k}}\rfloor}$

 

3.求 $f=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j)^k$ 

答案:$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j)^k = \sum\limits_{d=1}^{n}d^k\sum\limits_{x=1}^{\lfloor{\frac{n}{d}}\rfloor}\mu(x){\lfloor{\frac{n}{dx}}}\rfloor{\lfloor{\frac{m}{dx}}\rfloor}$

 第1题算出 $f_2(x)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==x]$ ,这一次我们要求所有的 gcd 的k次方,显然所求为 $f=\sum\limits_{x=1}x^kf_2(x)$ 。也就是所有的 gcd 的个数乘上这个 gcd 的 k 次方值。

 

4.求给定的 n 个数中有多少个四元组 (a,b,c,d) 的 gcd==1 :

f(t) = 求给定的 n 个数中有多少个四元组 (a,b,c,d) 的 gcd==t ,

F(t) = 求给定的 n 个数中有多少个四元组 (a,b,c,d) 的 gcd==kt 。

那么我们要求 f(1) ,应用倍数公式后,只要快速求解每一个 F(t) 就足够了。由于 k 是任意的,所以 gcd 被我们去掉了,我们只需要求 t 的倍数有m个,然后 $C_m^4$ 就是 F(t)。


参考资料:

https://blog.csdn.net/jk_chen_acmer/article/details/82712276

 

模板 - 数学 - 数论 - 莫比乌斯反演 - 2

标签:sum   数论   log   构造   acm   ==   article   一个   .net   

原文地址:https://www.cnblogs.com/Yinku/p/10494980.html

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