• BZOJ2705 SDOI2012 Longge的问题 【欧拉函数】


    BZOJ2705 SDOI2012 Longge的问题


    Description

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

    Input

    一个整数,为N。

    Output

    一个整数,为所求的答案。

    Sample Input

    6

    Sample Output

    15

    HINT

    【数据范围】
    对于60%的数据,0<N<=2160<N<=216
    对于100%的数据,0<N<=2320<N<=232



    #include<bits/stdc++.h>
    using namespace std;
    #define LL long long 
    LL n,m,ans=0;
    LL phi(LL t){
        LL tmp=t;
        for(int i=2;i<=m;i++)if(t%i==0){
            tmp=tmp/i*(i-1);
            while(t%i==0)t/=i;
        }
        if(t>1)tmp=tmp/t*(t-1);
        return tmp;
    }
    int main(){
        cin>>n;m=sqrt(n);
        for(int i=1;i<=m;i++)if(n%i==0){
            ans+=i*phi(n/i);
            ans+=(n/i)*phi(i);
        }
        if(m*m==n)ans-=m*phi(m);
        printf("%lld",ans);
        return 0;
    }
  • 相关阅读:
    Vue之仿百度搜索框
    Vue之交互
    Vue之键盘事件
    Vue之事件冒泡
    Vue之阻止默认行为
    sql注入常用注释符总结
    什么是Git
    Github部署博客
    php笔记
    JavaScript(更新中)
  • 原文地址:https://www.cnblogs.com/dream-maker-yk/p/9676385.html
Copyright © 2020-2023  润新知