bzoj 2705

orz教主的解法实在太神了

直接贴题解

 1 #include<bits/stdc++.h>
 2 #define inc(i,l,r) for(int i=l;i<=r;i++)
 3 #define dec(i,l,r) for(int i=l;i>=r;i--)
 4 #define link(x) for(edge *j=h[x];j;j=j->next)
 5 #define mem(a) memset(a,0,sizeof(a))
 6 #define inf 1e9
 7 #define ll long long
 8 #define succ(x) (1<<x)
 9 using namespace std;
10 ll read(){
11     ll x=0,f=1;char ch=getchar();
12     while(!isdigit(ch)){if(ch==‘-‘)f=-1;ch=getchar();}
13     while(isdigit(ch))x=x*10+ch-‘0‘,ch=getchar();
14     return x*f;
15 }
16 ll n,ans,t,s;
17 int main(){
18 //    freopen("data.in","r",stdin);
19     n=read();ans=1;
20     inc(i,2,(int)sqrt(n))if(n%i==0){
21         if(n==1)break;
22         for(t=1,s=0;n%i==0;s++)n/=i,t*=i;
23         ans*=(s+1)*t-s*t/i;
24     }
25     if(n!=1)ans*=n+n-1;
26     printf("%lld",ans);
27     return 0;
28 }

时间: 2024-10-07 07:48:02

bzoj 2705的相关文章

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

[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2705 [题目大意] 求出∑gcd(i,N)(1<=i<=N) [题解] $∑_{i=1}^{N}gcd(i,N)$ $=∑_{i=1}^{N}∑_{d|gcd(i,N)}\phi(d)$ $=∑ \phi(d)∑ _{1=<i<=N \land d|i \land d|N}1$ $=∑_{d|N}\phi(d)\lfloor\frac{i}{d}\rfloor$ [代码

[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: 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: 1959  Solved: 1229[Submit][Status][Discuss] Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一个整数,为N. Output 一个整数,为所求的答案. Sample Inp

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

BZOJ 2705 SDOI2012 Longge的问题 因数分解+欧拉函数

题目大意:给定n,求Σgcd(i,n) (1<=i<=n) n<=2^32 记fi为n的因数,则Σgcd(i,n)=Σphi(n/fi)*fi 记住分解因数和分解质数时都要用O(√n)的方法 不然准T 然后2^32-1不是质数 找质数验证的时候试试2147483647吧 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 10

BZOJ.2705.[SDOI2012]Longge的问题(莫比乌斯反演 欧拉函数)

题目链接 \(Description\) 求\[\sum_{i=1}^n\gcd(i,n)\] \(Solution\) \[ \begin{aligned} \sum_{i=1}^n\gcd(i,n) &=\sum_{d=1}^nd\sum_{i=1}^n[\gcd(i,n)=d]\ &=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}[\gcd(i,\lfloor\frac{n}{d}\rfloor)=1] \end{aligned