bzoj2705】的更多相关文章

http://www.lydsy.com/JudgeOnline/problem.php?id=2705 (题目链接) 题意 给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Solution 完了完了,复杂度分析都不会了.. $${ans=\sum_{d|n}d*φ(n/d)}$$ 细节 注意n要开LL 代码 // bzoj2705 #include<algorithm> #include<iostream> #include<cstring…
BZOJ2705 SDOI2012 Longge的问题 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一个整数,为N. Output 一个整数,为所求的答案. Sample Input 6 Sample Output 15 HINT [数据范围] 对于60%的数据,0<N<=2160<N<=216. 对于100%的数据,0<N…
欧拉函数phi[n]是表示1~n中与n互质的数个数. 可以用公式phi[n]=n*(1-1/p1)*(1-1/p2)*(1-1/p3)...*(1-1/pk)来表示.(p为n的质因子) 求phi[p]的过程: procedure calc(p:longint;var sum:longint); var i:longint; begin sum:=p; to trunc(sqrt(p)) do then begin sum:=sum ); do p:=p div i; // 保证每次都是质因子 e…
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.   丝帛题,枚举gcd(n,i),将N的所有约数求出来,然后…
Time Limit: 3000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一个整数,为N. Output 一个整数,为所求的答案. Sample Input 6 Sample Output 15 Hint [数据范围] 对于60…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2705 题意: 求 sigma(gcd(i,n), 1<=i<=n<2^32) 只有一组数据,很好搞,答案就是sigma(phi(n/d)),直接搜就行了. //STATUS:C++_AC_8MS_11284KB #include <functional> #include <algorithm> #include <iostream> //#i…
一个常用的结论(方法) 只要知道gcd(i,n)=L 的i的个数s,我们就能很轻易得出答案 gcd(i,n)=L gcd(i/L,n/L)=1 不难得到这样的s=与n/L互质的个数=phi(n/L) 一个数的欧拉函数最坏情况是可以在O(sqrt(n))的复杂度中弄出来的 我们可以穷举L,只要从1穷举到根号n即可 var i:longint;     ans,n:int64; function phi(x:int64):int64;   var i:longint;   begin     phi…
Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出\(\Sigma gcd(i, N) (1 \leq i \leq N)\). Input 一个整数,为N. Output 一个整数,为所求的答案. Sample Input 6 Sample Output 15 Hint 对于60%的数据,\(0<N \leq 2^{16}\) 对于100%的数据,\(0<N \leq 2^{32}\) Solution 记\(f…
Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N).   Solution 如果我们考虑每个gcd的贡献 那么k作为约数的贡献就是k*phi(n/k) 于是只需要枚举约数计算phi就行了 然而这好像是暴力=v= 然而约数也不可能很多 这么打也非常快 另:从这里也可以推出Σ[d|n]φ(d)=n 考虑phi函数计算 感觉可以考虑pi的贡献 然而我并是理不太清于是弃疗了 官方题解…
题意 题目链接 Sol 开始用反演推发现不会求\(\mu(k)\)慌的一批 退了两步发现只要求个欧拉函数就行了 \(ans = \sum_{d | n} d \phi(\frac{n}{d})\) 理论上来说复杂度是\(O(n)\)的,但是\(d\)的值十分有限.在\(2^{32}\)内最多的约数也只有1920个. /* */ #include<bits/stdc++.h> #define LL long long #define int long long const int MAXN =…