zoukankan      html  css  js  c++  java
  • 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


    //先枚举 n 的因数,假设为k,如果一个数x,与 n 的最大公约数等于 k, 那么必定 x/k 与 n/k 互质,那么求出个数累加即可,就转化成欧拉函数了!
    O(根号n*根号k...)? 反正很小了
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define MOD 1000000007
     4 #define INF 0x3f3f3f3f
     5 #define eps 1e-9
     6 #define LL long long
     7 #define MX 1002
     8 #define MK 20002
     9 
    10 LL n;
    11 LL euler(LL x)
    12 {
    13     LL res = x;
    14     for (LL i=2;i*i<=x;i++)
    15     {
    16         if (x%i==0)
    17         {
    18             res=res/i*(i-1);
    19             while(x%i==0) x/=i;
    20         }
    21     }
    22     if (x>1) res = res/x*(x-1);
    23     return res;
    24 }
    25 
    26 int main()
    27 {
    28     while (scanf("%lld",&n)!=EOF)
    29     {
    30         LL ans = 0;
    31         for (LL i=1;i*i<=n;i++)
    32         {
    33             if (n%i==0)
    34             {
    35                 ans += i*euler(n/i);
    36                 if (i*i!=n)
    37                     ans += n/i * euler(i);
    38             }
    39         }
    40         printf("%lld
    ",ans);
    41     }
    42     return 0;
    43 }
    View Code



  • 相关阅读:
    ElasticSearch 2 (10)
    zookeeper 配置
    zookeeper
    ES 聚合函数
    win 7安装 linux
    Elasticsearch分布式搜索集群配置
    Elasticsearch 插件安装
    为Elasticsearch添加中文分词,对比分词器效果
    .net 4.0 网站发布(转)
    ssm 网页
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/7628855.html
Copyright © 2011-2022 走看看