[SDOI2012] Longge的问题

(sumlimits_{i=1}^{n}gcd(i,n))

Solution

化简为 (sumlimits_{i|n}^{n}φ(dfrac{n}{i})i)

筛出欧拉函数暴力求答案即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
int phi(int n) {
    int m = floor(sqrt(n + 0.5)), ans = n;
    for (int i = 2; i <= m; i++) {
        if (n % i == 0) {
            ans = ans / i * (i - 1);
            while (n % i == 0) n /= i;
        }
    }
    if (n != 1) ans = ans / n * (n - 1);
    return ans;
}
signed main() {
    int n,ans=0;
    cin>>n;
    int lim=sqrt(n);
    for(int i=1;i<=lim;i++) if(n%i==0) {
        ans+=i*phi(n/i)+(i!=n/i)*n/i*phi(i);
    }
    cout<<ans;
}
原文地址:https://www.cnblogs.com/mollnn/p/12298729.html