关于sqrt和longlong
查看原帖
关于sqrt和longlong
461012
dyyzy楼主2023/8/7 20:30

rt

这是AC代码,如果没有int sq=sqrt(n) 然后把 sqrt(n) 带入 sq 的地方就寄了,求大佬指点QWQ

#include<iostream>
#include<cmath>
#define int long long
using namespace std;
const int N=65536+114;
int euler(int n){
	int ans=n;
	for(int i=2;i<=sqrt(n);++i){
		if(n%i==0){
			ans=ans/i*(i-1);
			while(n%i==0) n=n/i;
		}
	}
	if(n>1) ans=ans/n*(n-1);
	return ans;
}
signed main(){
	int n,ans=0;cin>>n;
	int sq=sqrt(n);
	for(int d=1;d<=sq;++d){
		if(n%d==0){
			ans+=euler(n/d)*d+euler(d)*(n/d);
		}
	}
	if(sq*sq==n) ans-=euler(sq)*sq;
	cout<<ans;
}
2023/8/7 20:30
加载中...