懵逼钨丝反演的一个好像很666的函数

Posted slrslr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了懵逼钨丝反演的一个好像很666的函数相关的知识,希望对你有一定的参考价值。

设F[k]表示gcd(x,y)为k或k的倍数,设f[i]表示gcd(x,y)==i,如何求f[i]

那我们就可以直接套上下面的这个函数

好多题推出式子以后直接上下面这个函数就行

屡试不爽

代码:

 1 int cal(int n,int m,int k)
 2 {
 3     int ans=0;
 4     n/=k; m/=k;
 5     for(int l=1,r;l<=n&&l<=m;l=r+1)
 6     {
 7         r=min(n/(n/l),m/(m/l));
 8         ans+=(n/l)*(m/l)*(sum[r]-sum[l-1]);
 9     }
10     return ans;
11 }

 

以上是关于懵逼钨丝反演的一个好像很666的函数的主要内容,如果未能解决你的问题,请参考以下文章

题解Luogu P4450 双亲数

bzoj2301: [HAOI2011]Problem b懵逼乌斯反演

数论分块之整除分块

题解Luogu P2257 YY的GCD

「莫比乌斯反演」

莫比乌斯反演入门