bzoj 2818 Gcd 莫比乌斯反演
2016-10-24 13:29
387 查看
莫比乌斯反演
(其实这题求一下phi就行了。。。)
(其实这题求一下phi就行了。。。)
#include <bits/stdc++.h> using namespace std; #define N 11000000 #define ll long long bool ip ; int prime ,mu ,cnt,n; ll ans; void init(int x) { mu[1]=1; for(int i=2;i<=x;i++) { if(!ip[i])prime[++cnt]=i,mu[i]=-1; for(int j=1;j<=cnt&&prime[j]*i<=x;j++) { ip[i*prime[j]]=1; if(i%prime[j]==0)break; mu[i*prime[j]]=-mu[i]; } } } ll get(int x) { ll ret=0; for(int i=1,last=1;i<=x;i=last+1) { last=x/(x/i); ret+=(ll)(x/i)*(x/i)*(mu[last]-mu[i-1]); } return ret; } int main() { //freopen("tt.in","r",stdin); scanf("%d",&n); init(n); for(int i=1;i<=n;i++)mu[i]+=mu[i-1]; for(int i=1,j;i<=cnt;) { for(j=i;j<=cnt&&n/prime[j]==n/prime[i];j++);j--; ans+=get(n/prime[i])*(j-i+1); i=j+1; } printf("%lld\n",ans); return 0; }
相关文章推荐
- BZOJ 2818 Gcd(gcd(x,y)为素数/欧拉函数/莫比乌斯反演)
- BZOJ 2818 Gcd(莫比乌斯反演)
- 【BZOJ2818】Gcd(莫比乌斯反演)
- [BZOJ2818]Gcd(莫比乌斯反演)
- 【bzoj 2818】Gcd(莫比乌斯反演)
- 【BZOJ2818】Gcd(莫比乌斯反演)
- 【BZOJ2818】Gcd(莫比乌斯反演,欧拉函数)
- bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
- BZOJ 2818: Gcd (莫比乌斯反演)
- BZOJ 2818 Gcd (欧拉筛 \ 莫比乌斯反演)
- bzoj 2818 Gcd(莫比乌斯反演)
- BZOJ 2818 gcd(莫比乌斯反演)
- 【BZOJ2818】Gcd(莫比乌斯反演)
- BZOJ 2818-Gcd(莫比乌斯反演)
- Bzoj 2818: Gcd(莫比乌斯反演)
- BZOJ 2818 Gcd + spoj 4491(莫比乌斯反演 分块)
- bzoj 2818: Gcd
- 【BZOJ 2818】gcd 欧拉筛
- 【BZOJ 2818】 gcd(附φ的线性筛法预处理)
- 【BZOJ2818】Gcd (欧拉函数)