刚刚学了狄利克雷卷积,想找个题练练手,结果找到了这个。
本着试一试的态度,我掏出了手写板……
于是得到了这么个玩意我怎么看都觉得没问题啊
写出来就成了这样
#include<bits/stdc++.h>
#define il inline
using namespace std;
il int read()
{
int v=0;char c=getchar();
while(c<'0')c=getchar();
while(c>='0'){v=v*10+c-'0';c=getchar();}
return v;
}
const int N=1e6+5;
int n,d,r1,r2;
long long ans;
int p[N],cnt,phi[N];
bool v[N];
il void get_phi()
{
phi[1]=1;
for(int i=2;i<=n;++i)
{
if(!v[i])
{
phi[i]=i-1;
p[++cnt]=i;
}
for(int j=1;p[j]<=n/i;++i)
{
v[p[j]*i]=1;
if(i%p[j]==0)
{
phi[p[j]*i]=phi[i]*p[j];
break;
}
else phi[p[j]*i]=phi[i]*phi[p[j]];
}
}
}
signed main()
{
n=read();
get_phi();
for(int k=1;k<=n;++k)
{
int i=n/k;
int j=n/k-1;
ans+=phi[k]*(i*j/2);
}
printf("%lld\n",ans);
return 0;
}
我满怀欣喜得交上去结果 Wa声一片
谁来帮帮孩子啊求求了呜呜