zoukankan      html  css  js  c++  java
  • C

    POJ - 2480

    (sum_{i=1}^{n}gcd(i,n)~(1leq nleq 10^9))

    显然有

    [sum_{i=1}^{n}gcd(i,n)=sum_{d|n}dvarphi(frac nd) ]

    (考虑 (varphi) 的意义)

    然后直接做随便做。

    Code

    #include<iostream>
    #include<cstdio>
    using namespace std;
    
    long long getphi(long long x){
        long long ret=1;
        for(int i=2;1ll * i*i<=x;++i){
            if(x%i==0){
                for(ret*=i-1;(x/=i)%i==0;ret*=i);
            }
        }
        return x>1?ret*(x-1):ret;
    }
    
    int main(){
        int n;
        while(scanf("%d",&n) != EOF){
            long long ans = 0;
            for(int i = 1; 1ll *  i * i <= n; ++ i){
                if(n % i != 0) continue;
                long long x = getphi(i), y = getphi(n/i);
                ans += x * (n/i) + y * i;
                if(i * i == n) ans -= x * i;
            }
            printf("%lld
    ",ans);
        }
    
        return 0;
    }
    
    
  • 相关阅读:
    项目总结升级2
    项目总结升级1
    项目总结升级
    项目总结4
    项目总结3
    体温填报app2.0开发
    每日博客
    第一周开课博客
    学习日报
    学习日报
  • 原文地址:https://www.cnblogs.com/zzhzzh123/p/13373806.html
Copyright © 2011-2022 走看看