2705: [SDOI2012]Longge的问题

Posted InWILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2705: [SDOI2012]Longge的问题相关的知识,希望对你有一定的参考价值。

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 4064  Solved: 2596
[Submit][Status][Discuss]

Description

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

Input

一个整数,为N。

Output

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

Sample Input

6

Sample Output

15

HINT

 

0<N<=2^32。

2019.1.1新加数据一组。 

 

欧拉函数

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 #define LL long long
 6 
 7 int eular(LL n)
 8 {
 9     LL ret=n;
10     LL nn=sqrt(n);
11     for(LL i=2;i<=nn;i++)
12     {
13         if(n%i==0)
14             ret=ret/i*(i-1);
15         while(n%i==0) n/=i;
16     }
17     if(n>1) ret=ret/n*(n-1);
18     return ret;
19 }
20 
21 LL n,ans;
22 
23 int main()
24 {
25     scanf("%lld",&n);
26     LL nn=sqrt(n);
27     for(LL i=1;i<=nn;i++)
28     {
29         if(n%i==0) ans+=i*eular(n/i)+(n/i)*eular(i);
30     }
31     if(nn*nn==n) ans-=eular(nn)*nn;
32     printf("%lld",ans);
33     return 0;
34 }

 

以上是关于2705: [SDOI2012]Longge的问题的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 2705: [SDOI2012]Longge的问题

bzoj2705 [SDOI2012]Longge的问题

BZOJ2705: [SDOI2012]Longge的问题

BZOJ-2705: [SDOI2012]Longge的问题 (欧拉函数)

Bzoj 2705: [SDOI2012]Longge的问题 欧拉函数,数论

2705: [SDOI2012]Longge的问题