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

2705: [SDOI2012]Longge的问题

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 1959  Solved: 1229
[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

round1 day1

题解:

直接欧拉函数即可。。。(注意:不要用线性筛,要用时再算欧拉函数。。。)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 LL lys,ys[2010],n;
 5 void getys()
 6 {
 7     LL nn=(LL)sqrt(n),i;
 8     lys=0;
 9     for(i=1;i<=nn;i++)
10     {
11         if(n%i==0)
12         {
13             ys[++lys]=i;
14             if(i*i!=n)ys[++lys]=n/i;
15         }
16     }
17 }
18 LL phi(LL k)
19 {
20     LL kk=(LL)sqrt(k),k1=k,i;
21     for(i=2;i<=kk;i++)
22     {
23         if(k1%i==0)
24         {
25             k=(k/i)*(i-1);
26             while(k1%i==0)k1/=i;
27         }
28     }
29     if(k1!=1)k=(k/k1)*(k1-1);
30     return k;
31 }
32 int main()
33 {
34     LL k,i;
35     LL ans;
36     scanf("%lld",&n);
37     getys();
38     ans=0;
39     for(i=1;i<=lys;i++)
40     {
41         if(n%ys[i]==0)
42         {
43             k=n/ys[i];
44             ans+=(LL)phi(k)*ys[i];
45         }
46     }
47     printf("%lld",ans);
48     return 0;
49 }

时间: 2024-12-14 11:10:47

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

bzoj 2705: [SDOI2012]Longge的问题 歐拉函數

2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1035  Solved: 669[Submit][Status] Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一个整数,为N. Output 一个整数,为所求的答案. Sample Input 6 Sampl

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

2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 3313  Solved: 2072[Submit][Status][Discuss] Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一个整数,为N. Output 一个整数,为所求的答案. Sample Inp

POJ2480 Longge&#39;s problem 欧拉函数的应用 &amp;&amp; 积性函数

题意很简单,求sum(gcd(i,n))   1<=i<=n; 这题看到后第一反应并没有里用积性函数的性质,不过也可以做,欣慰的是我反应还是比较快的 设f(n)=gcd(1,n)+gcd(2,n)+....+gcd(n-1,n) + gcd(n,n), 用g(n,i)表示满足 gcd(x,n)=i的 x的个数 (x小于n),则 f(n)=sum{i*g(n,i)}; 同时又利用 扩展欧几里德的性质  gcd(x,n)=i  的充要条件是 gcd(x/i,n/i)==1,所以 满足 x/i的解有

poj 2480 Longge&#39;s problem [ 欧拉函数 ]

传送门 Longge's problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7327   Accepted: 2416 Description Longge is good at mathematics and he likes to think about hard mathematical problems which will be solved by some graceful algorithms.

POJ 2154 Color(组合数学-波利亚计数,数论-欧拉函数,数论-整数快速幂)

Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7693   Accepted: 2522 Description Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). Your job is to calculate how many different kinds of th

[BZOJ 2705][SDOI 2012]Longge的问题(欧拉函数)

题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2705 网上的题解都不是很靠谱,我就来YY下自己的思路吧... 首先,对于1<=i<=N,gcd(i,N)的可能性解就是N的约数.那么这个题就是求Σgcd(i,N)=k,k是n的因数,等价于求Σgcd(i/k,N/k)=gcd(i',N/k)=1,即找出所有与N/k互质且小于等于N/k的i'的个数,这就转化到求欧拉函数的问题上来了. 所以这个题的做法是,sqrt(N)复杂度内枚举

BZOJ 2705: [SDOI2012]Longge的问题( 数论 )

---恢复内容开始--- T了一版....是因为我找质因数的姿势不对... 考虑n的每个因数对答案的贡献. 答案就是 ∑ d * phi(n / d) (d | n) 直接枚举n的因数然后求phi就行了. 但是我们可以做的更好. 注意到h(n) = ∑ d * phi(n / d) (d | n) 是狄利克雷卷积的形式, 而且f(x) = x 和 f(x) = phi(x) 都是积性函数, 所以答案h(x) 也是积性函数. 所以h(x) = Π h(p^k) (p 是 x 的质因数) 由phi(

BZOJ 2705: [SDOI2012]Longge的问题

2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2554  Solved: 1566[Submit][Status][Discuss] Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一个整数,为N. Output 一个整数,为所求的答案. Sample Inp

BZOJ 2705: [SDOI2012]Longge的问题 GCD

2705: [SDOI2012]Longge的问题 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=2705 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一个整数,为N. Output 一个整数,为所求的答案. Sam