这题和一样……不过是n和m相同而已……
所以虽然正解是欧拉函数然而直接改改就行了所以懒得再码一遍了2333
不过这题卡空间,记得mu开short,vis开bool
1 //minamoto 2 #include3 #define ll long long 4 const int N=1e7+5; 5 int p[1000005],n,m;short mu[N];bool vis[N];ll sum[N],ans; 6 void init(int n){ 7 mu[1]=1; 8 for(int i=2;i<=n;++i){ 9 if(!vis[i]) mu[i]=-1,p[++m]=i;10 for(int j=1;j<=m&&p[j]*i<=n;++j){11 vis[i*p[j]]=1;12 if(i%p[j]==0) break;13 mu[i*p[j]]=-mu[i];14 }15 }16 for(int j=1;j<=m;++j)17 for(int i=1;i*p[j]<=n;++i)18 sum[i*p[j]]+=mu[i];19 for(int i=1;i<=n;++i) sum[i]+=sum[i-1];20 }21 int main(){22 scanf("%d",&n),init(n);23 for(int l=1,r;l<=n;l=r+1){24 r=n/(n/l);25 ans+=(sum[r]-sum[l-1])*(n/l)*(n/l);26 }27 printf("%lld\n",ans);28 return 0;29 }