悬关一个,TLE最后两个点不知道怎么改
查看原帖
悬关一个,TLE最后两个点不知道怎么改
639402
KevinHu0402楼主2024/5/24 13:30
#include <bits/stdc++.h>
using namespace std;
int euler(int n){
    int res=n,a=n;
    for(int i=2;i*i<=a;i++){
        if(a%i==0){
            res=res/i*(i-1);
            while(a%i==0) a/=i;
        }
    }
    if(a > 1) res = res/a*(a-1);
    return res;
}
long long n,ans,phi[10005];
int main(){
	cin >> n;
    for(int i = 1;i <= n;i++){
        ans += euler(i) * (long long)(n / i) * (long long)(n / i);
        ans -= i;
    }
    ans /= 2;
    cout << ans;
	return 0;
}
2024/5/24 13:30
加载中...