bzoj2820: YY的GCD
2016-01-21 19:29
295 查看
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2820
题意:中文题。。。
分析:同bzoj2301,论文题。
代码:
#include<map> #include<set> #include<cmath> #include<queue> #include<math.h> #include<cstdio> #include<vector> #include<string> #include<cstring> #include<iostream> #include<algorithm> #pragma comment(linker, "/STACK:102400000,102400000") using namespace std; const int N=10000010; const int MAX=151; const int MOD=1000000007; const int MOD1=100000007; const int MOD2=100000009; const int INF=2100000000; const double EPS=0.00000001; typedef long long ll; typedef unsigned long long uI64; int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int a ,bo ,mu ,su ; ll sum ; void deal() { int i,j,k,w,n=10000000; memset(bo,0,sizeof(bo)); mu[1]=1;sum[0]=k=0; for (i=2;i<=n;i++) { if (!bo[i]) { a[++k]=i;mu[i]=-1; } for (j=1;j<=k;j++) { if (a[j]*i>n) break ; bo[a[j]*i]=1; if (i%a[j]==0) { mu[a[j]*i]=0;break ; } mu[a[j]*i]=-mu[i]; } } memset(su,0,sizeof(su)); for (i=1;i<=k;i++) { w=a[i]; while (w<=n) { su[w]+=mu[w/a[i]];w+=a[i]; } } for (i=1;i<=n;i++) sum[i]=sum[i-1]+su[i]; } ll get(int n,int m) { ll ret=0; int i,last; if (n>m) { n^=m;m^=n;n^=m; } for (i=1;i<=n;i=last+1) { last=min(n/(n/i),m/(m/i)); ret+=(ll)(n/i)*(m/i)*(sum[last]-sum[i-1]); } return ret; } int main() { int n,m,t; scanf("%d", &t); deal(); while (t--) { scanf("%d%d", &n, &m); printf("%lld\n", get(n,m)); } return 0; } /* 10 10 10 100 100 */
相关文章推荐
- 敌兵布阵
- #Android源代码#android:onClick属性的底层调用
- 搭建了一个多项目、插件化的ASP.net MVC开发框架
- Capture images using V4L2 on Linux
- 设计模式--6、策略模式
- 浅谈android Animation Animator 的实现原理
- 搭建了一个多项目、插件化的ASP.net MVC开发框架
- 01-密码学扫盲
- “这十二行代码是如何让浏览器爆炸"之我见
- 硬币等于骰子(在统计学意义上)
- 下载网址 wMware
- linux中怎样设置dhcpd
- Performance Monitor usage1:Overview
- sqlserver数据库系统性能监控步骤
- openerp参考文章
- hdu1695 GCD 【欧拉函数+容斥】
- 使用Android获取的音乐文件数据库
- VIP的转移
- sqlserver数据库系统性能监控步骤
- Samba Linux和Windows互访