GCD
来源:互联网 发布:imp oracle 导入数据 编辑:程序博客网 时间:2024/05/22 07:03
训练指南p125
数论学到现在觉得最有意思的一道题
gcd(a,b)==c等价于gcd(a/c,b/c)==1
这样就可以用欧拉函数求出满足给定a,gcd(a,b)==c的b的个数
还有一个要点是算贡献取代枚举因子,这个思想最近多校运用的挺多的。。
//#pragma comment(linker, "/STACK:1024000000,1024000000") #include<bits/stdc++.h>#include<stdio.h>#include<algorithm>#include<queue>#include<string.h>#include<iostream>#include<math.h>#include<set>#include<map>#include<vector>#include<iomanip>using namespace std;#define ll long long#define pb push_back#define FOR(a) for(int i=1;i<=a;i++)const double PI = acos(-1.0);const int maxn=4e6+6;ll S[maxn];ll f[maxn];int phi[maxn];void phi_table(){phi[1]=1;for(int i=2;i<maxn;i++){if(!phi[i])for(int j=i;j<maxn;j+=i){if(!phi[j])phi[j]=j;phi[j]=phi[j]/i*(i-1);}}}void init(){phi_table();for(int i=1;i<maxn;i++){for(int j=i*2;j<maxn;j+=i)f[j]+=i*phi[j/i];}}int main(){int n;init();for(int i=1;i<maxn;i++){S[i]=S[i-1]+f[i];}while(scanf("%d",&n) && n){printf("%lld\n",S[n]);}}
阅读全文
0 0
- gcd
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- gcd
- GCD
- GCD
- GCD
- GCD
- GCD
- mat--- -MAT比Menmery Monitor更强大
- 框架整合____SSH框架整合(主流整合方式,最易懂整合方式)
- POJ
- HDU 母函数简单题
- eclipse中配置activiti-5.18.0
- GCD
- 【Python】抓取京东列表页商品信息(selenium)
- PL2887|PL2887牛叉代理商|规格书|应用说明书|现货|价格|方案设计
- Spring mode = "aspectj" 配置事务报错
- 子组件向父组件传值
- 数据结构头结点链表
- JQuery实现购物车数量加减总价累加
- Spring事务
- mysql中 show index from tb_name命令各列的含义,mysql binary 含义