[BZOJ 2693]jzptab:莫比乌斯反演
2017-06-01 17:23
393 查看
点击这里查看原题
和BZOJ 2154类似,但是是多组数据,需要转化
http://blog.csdn.net/PoPoQQQ/article/details/42078725
(注意取模的问题,我因为输出答案时没有+mod%mod而WA了一次)
和BZOJ 2154类似,但是是多组数据,需要转化
http://blog.csdn.net/PoPoQQQ/article/details/42078725
(注意取模的问题,我因为输出答案时没有+mod%mod而WA了一次)
/* User:Small Language:C++ Problem No.:2693 */ #include<bits/stdc++.h> #define ll long long #define inf 999999999 using namespace std; const int M=1e7+5; const ll mod=1e8+9; int n,m,mu[M],prime[M],cnt; ll ans,h[M],sum[M]; bool not_prime[M]; ll getsum(int n,int m){ n=(ll)n*(n+1)/2%mod; m=(ll)m*(m+1)/2%mod; return (ll)n*m%mod; } void solve(){ ans=0; scanf("%d%d",&n,&m); if(n>m) swap(n,m); for(int i=1,r;i<=n;i=r+1){ r=min(n/(n/i),m/(m/i)); ans=(ans+(sum[r]-sum[i-1]+mod)%mod*getsum(n/i,m/i)%mod)%mod; } printf("%lld\n",(ans+mod)%mod); } int main(){ freopen("data.in","r",stdin);// mu[1]=h[1]=1; for(int i=2;i<=1e7;i++){ if(!not_prime[i]){ prime[++cnt]=i; mu[i]=-1; h[i]=(i-(ll)i*i)%mod; } for(int j=1;j<=cnt&&i*prime[j]<=1e7;j++){ not_prime[i*prime[j]]=1; if(i%prime[j]==0){ mu[i*prime[j]]=0; h[i*prime[j]]=h[i]*prime[j]%mod; break; } mu[i*prime[j]]=-mu[i]; h[i*prime[j]]=h[i]*h[prime[j]]%mod; } } for(int i=1;i<=1e7;i++) sum[i]=(sum[i-1]+h[i])%mod; int t; scanf("%d",&t); while(t--) solve(); return 0; }
相关文章推荐
- 【BZOJ2693】jzptab [莫比乌斯反演]
- 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&amp;&amp;BZOJ 2693 jzptab)
- 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)
- BZOJ 2693 jzptab 莫比乌斯反演
- 【BZOJ 2693】jzptab(莫比乌斯+分块)
- bzoj 2693: jzptab 莫比乌斯反演
- bzoj2693 jzptab(反演LCM之和)
- bzoj 2693 jzptab(线性筛预处理+反演)
- BZOJ 2693: jzptab [莫比乌斯反演 线性筛]
- bzoj2693: jzptab 莫比乌斯反演
- BZOJ 2693 jzptab 【莫比乌斯反演】
- bzoj2154: Crash的数字表格/2693: jzptab [莫比乌斯反演、数论推导]
- 【莫比乌斯反演】【数论】[ZBOJ 2693]jzptab
- 【bzoj2693】jzptab【反演】
- BZOJ 2693: jzptab [莫比乌斯反演 线性筛]
- 莫比乌斯进阶:bzoj 2693 jzptab(Mobius)
- 【bzoj2693】【jzptable】【莫比乌斯反演】
- [莫比乌斯反演 积性函数前缀和] BZOJ 2693 jzptab
- bzoj2820 YY的GCD【莫比乌斯反演】
- bzoj 2820 莫比乌斯反演