题目链接
题目大意:求 ∑x=1n∑y=1mgcd(x,y) ∑ x = 1 n ∑ y = 1 m g c d ( x , y )
题解:点(x,y)与(0,0)所连线段上不包含原点有的点为gcd(x,y)
反演或简单容斥都可以
我的收获:2333
#include
#include
#include
#include
#include
using namespace std;
long long f[110000];
int n,m;
long long ans;
int main()
{
scanf("%d%d",&n,&m);
if(n>m) swap(n,m);
for(int i=n;i;i--)
{
f[i]=(long long)(n/i)*(m/i);
for(int j=2;j*i<=n;j++)
{
f[i]-=f[j*i];
}
ans+=f[i]*(2*i-1);
}
printf("%lld\n",ans);
return 0;
}