bzoj2818Gcd 莫比乌斯反演
2017-06-09 10:11
417 查看
其实这题可以用欧拉函数做,我只是闲得蛋疼用反演而已。。
最后那一坨分块搞一下就好了
最后那一坨分块搞一下就好了
#include<cstdio> #include<algorithm> #include<cstring> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) using namespace std; typedef long long ll; const int N=1e7+5; ll n,ans,p ,pri ,mu ; int main() { int tot=0; scanf("%lld",&n); mu[1]=1; fo(i,2,n) { if (!p[i]) { pri[++tot]=i; mu[i]=-1; } fo(j,1,tot) { if (pri[j]*i>n)break; p[i*pri[j]]=1; if (i%pri[j]==0) { mu[i*pri[j]]==0; break; } else mu[i*pri[j]]=-mu[i]; } mu[i]+=mu[i-1]; } for(ll d=1;d<=tot&&pri[d]<=n;++d) { ll m=(ll)n/pri[d]; ll j=0; for(ll i=1;i<=m;i=j+1) { j=min(m,m/(m/i)); ans+=(m/i)*(m/i)*(mu[j]-mu[i-1]); } } printf("%lld\n",ans); }
相关文章推荐
- 【莫比乌斯反演】[BZOJ2820]YY的GCD
- 【bzoj2045】【双亲数】【莫比乌斯反演】
- HYSBZ/BZOJ 2154 Crash的数字表格 - 莫比乌斯反演
- [bzoj2301]Problem b莫比乌斯反演+分块优化
- BZOJ4176 Lucas的数论 【莫比乌斯反演 + 杜教筛】
- bzoj 2440 简单莫比乌斯反演
- bzoj 3994: [SDOI2015]约数个数和 莫比乌斯反演
- BZOJ 3259 [Sdoi2014]数表 (莫比乌斯反演 + 树状数组)
- 【BZOJ】【P2045】【双亲数】【题解】【莫比乌斯反演】
- [莫比乌斯反演 伯努利数] BZOJ 2627 JZPKIL
- bzoj 2301: [HAOI2011]Problem b 莫比乌斯反演
- bzoj 2005: [Noi2010]能量采集【莫比乌斯反演】
- BZOJ2818 GCD 【莫比乌斯反演】
- BZOJ 2820 YY的GCD 莫比乌斯反演
- Bzoj2301 [HAOI2011]Problem b 莫比乌斯反演
- BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛
- BZOJ4816 [Sdoi2017]数字表格 【莫比乌斯反演】
- bzoj 4176: Lucas的数论【莫比乌斯反演+杜教筛】
- bzoj 1101 [POI2007]Zap 莫比乌斯反演
- BZOJ 4176: Lucas的数论 莫比乌斯反演 杜教筛