BZOJ 2818 gcd(莫比乌斯反演)
2015-04-29 15:28
429 查看
Gcd
Time Limit:10000MS Memory Limit:262144KB 64bit IO Format:%lld
& %llu
Submit Status
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
Input
一个整数N
Output
如题
Sample Input
Sample Output
Time Limit:10000MS Memory Limit:262144KB 64bit IO Format:%lld
& %llu
Submit Status
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
Input
一个整数N
Output
如题
Sample Input
4
Sample Output
4
#include<cstdio> #include<algorithm> #include<iostream> #include<cmath> #include<cstring> #include<vector> #define ll long long #define N 10000010 using namespace std; bool check[N+10]; int prime ; int mu[N+10]; int tot; int n; void Moblus() { memset(check,0,sizeof check); mu[1]=1; tot=0; for(int i=2; i<N; i++) { if(!check[i]) { prime[tot++]=i; mu[i]=-1; } for(int j=0; j<tot; j++) { if(i*prime[j]>N)break; check[i*prime[j]]=1; if(i%prime[j]==0) { mu[i*prime[j]]=0; break; } else mu[i*prime[j]]=-mu[i]; } } } int main() { Moblus(); while(scanf("%d",&n)!=EOF) { ll ans=0; for(int i=0; i<tot; i++) { int x=n/prime[i]; if(x==0)break; for(int j=1; j<=x; j++) ans+=(ll)mu[j]*(x/j)*(x/j); } printf("%lld\n",ans); } return 0; }
相关文章推荐
- BZOJ 2818 Gcd(gcd(x,y)为素数/欧拉函数/莫比乌斯反演)
- 【BZOJ2818】Gcd(莫比乌斯反演)
- BZOJ 2818 Gcd(莫比乌斯反演)
- [BZOJ2818]Gcd(莫比乌斯反演)
- 【bzoj 2818】Gcd(莫比乌斯反演)
- bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
- 【BZOJ2818】Gcd(莫比乌斯反演,欧拉函数)
- BZOJ 2818: Gcd (莫比乌斯反演)
- BZOJ 2818 Gcd (欧拉筛 \ 莫比乌斯反演)
- bzoj 2818 Gcd(莫比乌斯反演)
- 【BZOJ2818】Gcd(莫比乌斯反演)
- Bzoj 2818: Gcd(莫比乌斯反演)
- BZOJ 2818-Gcd(莫比乌斯反演)
- BZOJ 2818 Gcd + spoj 4491(莫比乌斯反演 分块)
- 【BZOJ2818】Gcd(莫比乌斯反演)
- bzoj 2818 Gcd 莫比乌斯反演
- 【BZOJ2818】Gcd (欧拉函数)
- 欧拉筛(bzoj 2818: Gcd)
- [BZOJ2820]YY的GCD(莫比乌斯反演)
- _bzoj2818 Gcd【线性筛法 欧拉函数】