您的位置:首页 > 其它

2005: [Noi2010]能量采集

2018-03-28 20:23 330 查看
题目链接

题目大意:求∑x=1n∑y=1mgcd(x,y)∑x=1n∑y=1mgcd(x,y)

题解:点(x,y)与(0,0)所连线段上不包含原点有的点为gcd(x,y)

反演或简单容斥都可以

我的收获:2333

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: