第一个自己搞出来的反演题、
相比于上一个题,这个题简直和善
直接反演搞,最后一步还不用化简、、
这题放到现在出估计全场都A了
和bzoj3309相比,它只是第一步、
而正解是phi、、
码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 100005
#define ll long long
ll n,m,ans,mu[N],su[N],tot,i,j,k,f[N];
bool he[N];
void eular(int n)
{
mu[1]=1;
for(i=2;i<=n;i++)
{
if(!he[i])
{
su[++tot]=i;
mu[i]=-1;
}
for(j=1;j<=tot&&su[j]*i<=n;j++)
{
he[i*su[j]]=1;
if(i%su[j]==0)
{
mu[i*su[j]]=0;
break;
} else
{
mu[i*su[j]]=-mu[i];
}
}
}
}
int main()
{
scanf("%lld%lld",&n,&m);
if(n>m)swap(n,m);
eular(n);
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j+=i)
{
f[j]+=mu[j/i]*((i-1)*2+1);
}
}
for(i=1;i<=n;i++)
{
ans+=f[i]*(m/i)*(n/i);
}
printf("%lld",ans);
}