• 某数学题1


    P2303 [SDOi2012]Longge的问题

    题目描述
    Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N)。

    输入格式:
    一个整数,为N。

    输出格式:
    一个整数,为所求的答案。

    输入样例#1:
    6
    输出样例#1:
    15
    说明

    对于60%的数据,0<N<=2^16
    对于100%的数据,0<N<=2^32

    做法

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

    [ecause sum_{i=1}^{n}[(a,b)=1]=phi(i) ]

    [ herefore ans=sum_{d|n}phi(frac{n}{d})d ]

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    
    typedef long long ll;
    
    ll n,ans;
    
    int phi(ll x){
        ll m=sqrt(x),phi=x;
        for(int i=2;i<=m;i++){
            if(x%i==0)
                phi=phi*(i-1)/i;
            while(x%i==0) x=x/i;
        }
        if(x>1) phi=phi*(x-1)/x;
        return phi;
    }
    
    int main(){
        scanf("%lld",&n);
        for(ll i=1;i*i<=n;i++){
            if(n%i==0){
                ll num=n/i;
                ans+=phi(num)*i;
                if(num!=i)
                    ans+=phi(i)*num;
            }
        }
        printf("%lld",ans);
        return 0;
    }
    
    
  • 相关阅读:
    Scala-函数
    Scala--循环
    scala(一)
    拦截器filter
    Ajax实现分页二
    并发1
    泛型
    协议protocol
    结构体structure
    类的继承
  • 原文地址:https://www.cnblogs.com/qdscwyy/p/7896335.html
Copyright © 2020-2023  润新知