【BZOJ 2818】 gcd(附φ的线性筛法预处理)
来源:互联网 发布:as3.0调用js页面方法 编辑:程序博客网 时间:2024/06/11 00:54
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
注意,若x!=y,则(x,y)与(y,x)都要计算在内。
1<=N<=10^7
Analysis
设
满足上式的
因此
预处理
但是,身为蒟蒻的我,太弱,竟然忘了
φ的预处理
因为线筛只可能出现
首先,因为
而若
正难则反,首先有一个神奇的性质。
若
所以
即与
Code
#include<cstdio>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef long long ll;const int N=int(1e7);int n,pri[N];ll ans,phi[N];bool bz[N];void pre(int n){ phi[1]=1; fo(i,2,n) { if(!bz[i]) bz[i]=1,pri[++pri[0]]=i,phi[i]=i-1; fo(j,1,pri[0]) { int t=i*pri[j]; if(t>n) break; bz[t]=1; if(i%pri[j]==0) { phi[t]=phi[i]*pri[j]; break; } phi[t]=phi[i]*phi[pri[j]]; } } fo(i,3,n) phi[i]+=phi[i-1];}int main(){ scanf("%d",&n); pre(n); fo(i,1,pri[0]) { if(n/pri[i]<2) break; ans+=phi[n/pri[i]]*2; } printf("%lld",ans+pri[0]); return 0;}
0 0
- 【BZOJ 2818】 gcd(附φ的线性筛法预处理)
- BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes筛)
- BZOJ 2818 Gcd (线性筛+欧拉函数)
- [BZOJ 2818] Gcd 线性筛+欧拉函数前缀和
- bzoj 2693 jzptab(线性筛预处理+反演)
- BZOJ 2818 Gcd 线性欧拉
- bzoj 2818: Gcd 线性筛求欧拉函数
- BZOJ-2005 能量采集 2D GCD sum 线性筛
- 【bzoj2818】Gcd 线性筛法
- BZOJ 2818: Gcd 线形筛
- 欧拉筛(bzoj 2818: Gcd)
- bzoj 2820: YY的GCD (反演)
- 线性筛法 gcd 快速幂
- BZOJ 2818 Gcd (数论 欧拉)
- bzoj 2818 GCD(欧拉函数)
- BZOJ 2818 gcd
- BZOJ 2818 Gcd
- 【BZOJ 2818】 gcd
- leetcode——Next Permutation
- 4、Android UI测试
- Swift UI学习之UITableView and protocol use
- linux下查看文件编码及修改编码
- Python爬虫积累
- 【BZOJ 2818】 gcd(附φ的线性筛法预处理)
- 当布局中如果出现多个文本并且颜色背景不同,我们怎么办
- 1、我的php自学笔记开始
- swift 学习这十八:宏()
- leetcode——Container With Most Water
- c++: vector
- 应用内跳转到App Store
- Swift 学习之二十:类型强转(+、-、*、/)
- hdu acm 1016