样例没过,答案对了
  • 板块P2568 GCD
  • 楼主100Accepted
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/6 12:42
  • 上次更新2024/9/6 17:57:44
查看原帖
样例没过,答案对了
1368288
100Accepted楼主2024/9/6 12:42

输入4,输出-52,结果AC

#include<cstdio>
using namespace std;
long long n,cnt=0,i,j,sum;
int main(){
	scanf("%lld",&n);
	long long f[n+1],z[n+1];
	bool x[n+1];
	for(i=1;i<=n;i++){
		x[i]=0;f[i]=i;
	}
	x[1]=1;
	for(i=2;i<=n;i++){
		if(!x[i]){
			z[++cnt]=i;
			for(j=1;j*z[cnt]<=n;j++){
				x[j*z[cnt]]=1;
				f[j*z[cnt]]=f[j*z[cnt]]/z[cnt]*(z[cnt]-1);
			}
		}
	}
//	for(i=1;i<=cnt;i++){
//		printf("%lld ",z[i]);
//	}
	sum=cnt;
	for(i=2;i<=n;i++){
		while(z[cnt]*i>n)cnt--;
		sum+=f[i]*cnt*2;
	}
	printf("%lld",sum);
	return 0;
}
//41 457
2024/9/6 12:42
加载中...