解析:
不明白 N O I NOI NOI的题为什么会有非码农向。。。
这道题可以用莫比乌斯反演,稍后我会更新莫比乌斯反演的题解。
但其实这道题最好的做法是容斥。。。
回去先看题,发现每个点 ( i , j ) (i,j) (i,j)损失能量等于 g c d ( i , j ) ∗ 2 − 1 gcd(i,j)*2-1 gcd(i,j)∗2−1。。。似乎有点用。
考虑统计 g c d ( i , j ) = = d gcd(i,j)==d gcd(i,j)==d的点有多少,发现可以容斥。。。
统计所有 d ∣ g c d ( i , j ) d|gcd(i,j) d∣gcd(i,j)的点个数,再减去 g c d ( i , j ) = = 2 d , 3 d . . . gcd(i,j)==2d,3d... gcd(i,j)==2d,3d...的点个数
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define re register
unsigned ll f[100005];
ll n,m;
ll ans;
int main(){
cin>>n>>m;
if(n<m)swap(n,m);
for(int re i=n;i;--i){
f[i]=(n/i)*(m/i);
for(int re j=i<<1;j<=n;j+=i)f[i]-=f[j];
ans+=f[i]*((i<<1)-1);
}
cout<<ans;
return 0;
}