[UVa 11426] GCD - Extreme (II) (数论 + 脑洞 + 技巧)
来源:互联网 发布:非凡网络加速器 编辑:程序博客网 时间:2024/05/18 02:14
UVa - 11426
给定一个 N,数对 i,j <= N且 i < j
求所有数对的 gcd(i,j)的和
其中 N <= 4e6
这是大白 p125的例题
首先按题目描述两个for肯定是不行的
所以我们反过来考虑,一个数是多少对数的
换句话来说,就是一个数被加了几次
于是我们枚举这个
设有数对
其中
那么对于一个
答案是
于是我们就能得到对于一个数
时间复杂度
所以问题就得到解决了
关于一个数的因子或
#include <cstdio>#include <iostream>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <set>#include <queue>using namespace std;typedef pair<int,int> Pii;typedef long long LL;typedef unsigned long long ULL;typedef double DBL;typedef long double LDBL;#define MST(a,b) memset(a,b,sizeof(a))#define CLR(a) MST(a,0)#define Pow2(a) (a*a)const int maxn=4e6+10;;int N;int phi[maxn];LL sum[maxn],ans[maxn];void init_phi(int);int main(){ init_phi(maxn); for(int i=1; i<maxn; i++) for(int j=i*2; j<maxn; j+=i) sum[j]+=(LL)i*phi[j/i]; ans[2]=sum[2]; for(int i=3; i<maxn; i++) ans[i]=ans[i-1]+sum[i]; while(~scanf("%d", &N)&&N) { printf("%lld\n", ans[N]); } return 0;}void init_phi(int Lim){ for(int i=1; i<Lim; i++) phi[i]=i; for(int i=2; i<Lim; i++) { if(phi[i]<i) continue; for(int j=i; j<Lim; j+=i) phi[j]=phi[j]/i*(i-1); }}
0 0
- [UVa 11426] GCD - Extreme (II) (数论 + 脑洞 + 技巧)
- UVA 11426 - GCD - Extreme (II) (数论)
- UVA 11426 - GCD - Extreme (II) (数论)
- uva 11426 - GCD - Extreme (II)(数论)
- Uva 11426 GCD - Extreme (II)(基本数论)
- UVA 11426 GCD - Extreme (II) (数论|欧拉函数)
- UVA 11426 - GCD - Extreme (II)
- UVA 11426 GCD - Extreme (II)
- uva 11426 GCD Extreme (II)
- UVA - 11426 GCD - Extreme (II)
- UVA:11426 GCD - Extreme (II)
- UVA 11426 GCD - Extreme (II)
- UVA 11426-GCD - Extreme (II)
- UVA 11426GCD - Extreme (II)
- UVA 11426 GCD - Extreme (II)
- UVA 11426 - GCD Extreme(II)
- UVA 11426 GCD Extreme (II)
- uva 11426 GCD - Extreme (II) (神奇的GCD)
- empty与isset的用法及区别(转载)
- JAVA设计模式(05):创建型-原型模式(Prototype)
- 方法重载|返回数组|out/ref|自己写tryparse
- Unity3d生命周期
- mysql 中文乱码解决方法
- [UVa 11426] GCD - Extreme (II) (数论 + 脑洞 + 技巧)
- 彻底阻止win7出现升级windows10的提示
- 十、森林与并查集---(6)并查集路径压缩优化
- DevicePolicyManager类的使用
- HDUOJ-1003 Max Sum(最大子序列和)(动态规划)
- 程序设计语言基本概念语 与经典真题
- ARP断网攻击和欺骗实现 kali
- 在Linux上安装Memcached服务和PHP连接
- hdu 2157 How many ways??