BZOJ2820: YY的GCD
来源:互联网 发布:海盗战 知乎 编辑:程序博客网 时间:2024/04/29 15:02
BZOJ2820
直接枚举质数像1101那样做肯定会T…然而我还是不信邪的T了一发才开心。。
根据前面的题的经验。
这道题的式子可以先化成
将式子进一步推演:
令
最后就分块求就好了。
【代码】
#include <cstdio>#include <iostream>#include <algorithm>#define N 10000005using namespace std;typedef long long ll;int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}int T,n,m;int Miu[N],p[664580],sum[N];bool Not_Prime[N];void Get_Miu(){ Miu[1]=1; for(register int i=2;i<N;i++) { if(!Not_Prime[i]) p[++p[0]]=i,Miu[i]=-1; for(register int j=1;j<=p[0]&&i*p[j]<N;j++) { Not_Prime[i*p[j]]=1; if(i%p[j]==0) {Miu[i*p[j]]=0;break;} Miu[i*p[j]]=-Miu[i]; } } for(register int i=1;i<=p[0];i++) for(register int j=p[i];j<N;j+=p[i]) sum[j]+=Miu[j/p[i]]; for(register int i=1;i<N;i++) sum[i]+=sum[i-1];}void Calc(){ ll ans=0;int pos=1; for(int i=1;i<=n;i=pos+1) { pos=min(n/(n/i),m/(m/i)); ans+=1LL*(sum[pos]-sum[i-1])*(n/i)*(m/i); } printf("%lld\n",ans);}int main(){ Get_Miu(); T=read(); while(T--) { n=read(),m=read(); if(n>m) swap(n,m); Calc(); } return 0;}
阅读全文
0 0
- [bzoj2820] yy的gcd
- bzoj2820: YY的GCD
- bzoj2820: YY的GCD
- [BZOJ2820]YY的GCD
- BZOJ2820: YY的GCD
- bzoj2820&&YY的GCD
- bzoj2820 YY的GCD
- YY的GCD[bzoj2820]
- bzoj2820 YY的GCD
- BZOJ2820: YY的GCD
- BZOJ2820 YY的GCD
- bzoj2820&&COGS2165 YY的GCD
- BZOJ2820: YY的GCD(Mobius反演)
- bzoj2820: YY的GCD 莫比乌斯反演
- 【莫比乌斯反演】[BZOJ2820]YY的GCD
- 【bzoj2820】YY的GCD 莫比乌斯反演
- 【bzoj2820】【YY的gcd】【莫比乌斯反演】
- Bzoj2820:YY的GCD:莫比乌斯反演
- 使用文本挖掘技术分析Twitter用户对电影的评价
- android四大组件之intent
- 写文章 【500万花落谁家】京东金融——中信量化策略大赛等你来战
- HDU 1016
- 算法导论程序23--有根树的表示(Python)
- BZOJ2820: YY的GCD
- 进程调度之linux操作系统的进程与线程基本概念
- xml
- IO流应用-文件夹的复制
- 自定义TabLayout的tab标签内容在点击的时候出现灰色背景
- jQuery的属性与样式之.val()
- h5 web 存储
- MFC框架机制详解
- Java线程(初识)