zoukankan      html  css  js  c++  java
  • BZOJ2705: [SDOI2012]Longge的问题

    2705: [SDOI2012]Longge的问题

    Time Limit: 3 Sec  Memory Limit: 128 MB
    Submit: 3197  Solved: 1996
    [Submit][Status][Discuss]

    Description

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

    Input

    一个整数,为N。

    Output

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

    Sample Input

    6

    Sample Output

    15

    HINT

    【数据范围】

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

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

     

    Source

     
    【题解】
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <cmath> 
     6 #define min(a, b) ((a) < (b) ? (a) : (b))
     7 #define max(a, b) ((a) > (b) ? (a) : (b))
     8 
     9 long long n;
    10 
    11 long long phi(long long x)
    12 {
    13     long long ans = x;
    14     long long ma = sqrt(x);
    15     for(register long long i = 2;i <= ma;++ i)
    16         if(x % i == 0)
    17         {
    18             ans -= ans/i;
    19             while(x % i == 0)x /= i;
    20         }
    21     if(x > 1)ans -= ans/x;//显然>根号n的n的质因数只有一个
    22     return ans;
    23 }
    24 int main()
    25 {
    26     scanf("%d", &n);
    27     register long long last, ans = 0;
    28     register long long ma = sqrt(n);
    29     for(register long long d = 1;d <= ma;++ d)
    30     {
    31         if(n % d == 0)
    32         {
    33             ans += phi(d) * (n/d);
    34             if(d * d != n)ans += phi(n/d) * (d);
    35         }
    36     }
    37     printf("%lld", ans);
    38     return 0;
    39 }
    BZOJ2705
     
  • 相关阅读:
    springboot访问静态资源遇到的坑
    mysql存储过程
    sharding-jdbc数据分片配置
    sharding-jdbc springboot配置
    数据库分库分表配置sharding-jdbc
    mysql数据库分库分表shardingjdbc
    angluarJs与后台交互小案例
    angluarJs与后台交互get
    DE1-soc软件实验”hello_word"
    编译到底做什么
  • 原文地址:https://www.cnblogs.com/huibixiaoxing/p/7491556.html
Copyright © 2011-2022 走看看