zoukankan      html  css  js  c++  java
  • 51nod 1040 最大公约数的和 欧拉函数

    题目来源: rihkddd
    基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
     收藏
     关注
    给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6
    1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15
     
    Input
    1个数N(N <= 10^9)
    Output
    公约数之和
    Input示例
    6
    Output示例
    15
    思路:欧拉函数(可能好久没写欧拉,有点忘了);
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define mod 1000000009
    #define inf 999999999
    #define esp 0.00000000001
    //#pragma comment(linker, "/STACK:102400000,102400000")
    int scan()
    {
        int res = 0 , ch ;
        while( !( ( ch = getchar() ) >= '0' && ch <= '9' ) )
        {
            if( ch == EOF ) return 1 << 30 ;
        }
        res = ch - '0' ;
        while( ( ch = getchar() ) >= '0' && ch <= '9' )
            res = res * 10 + ( ch - '0' ) ;
        return res ;
    }
    int phi(int n)
    {
        int i,rea=n;
        for(i=2;i*i<=n;i++)
        {
            if(n%i==0)
            {
                rea=rea-rea/i;
                while(n%i==0)  n/=i;
            }
        }
        if(n>1)
            rea=rea-rea/n;
        return rea;
    }
    int main()
    {
        int x,y,z,i,t;
        while(~scanf("%d",&x))
        {
            ll ans=0;
            for(i=1;i*i<=x;i++)
            {
                if(x%i==0)
                {
                    if(i*i!=x)
                    ans+=x/i*phi(i);
                    ans+=i*phi(x/i);
                }
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    PDO drivers no value 解决办法
    每日一题 2019.10.10
    每日一题2019.10.9
    每日一题 2019.9.30
    每日一题 2019.9.29
    每日一题 2019.9.26
    每日一题 2019.9.25
    Python 中的复数问题
    Pycharm 导入 pygame包报错问题
    每日一题 2019.9.24
  • 原文地址:https://www.cnblogs.com/jhz033/p/5495360.html
Copyright © 2011-2022 走看看