[HDU1695]GCD(莫比乌斯反演)
来源:互联网 发布:知乎jennyyy照片 编辑:程序博客网 时间:2024/04/29 19:17
题目描述
传送门
题解
又是根据题目化出来一坨式子。
令i=mk,j=nk
这样看起来就美观一点了。
听说可以分块求?
反正我打的暴力。
去重的话可以把重复的那一段单独求,然后/2,得到了重复的数,用原答案减去这个数,就为最后的答案。
代码
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define LL long longint T,a,b,c,d,k;int n,m,mu[100005],p[100005],prime[100005];LL ans1,ans2; inline void get_mu(int n){ mu[1]=1; for (int i=2;i<=n;++i){ if (!p[i]){ prime[++prime[0]]=i; mu[i]=-1; } for (int j=1;j<=prime[0]&&i*prime[j]<=n;++j){ p[i*prime[j]]=1; if (i%prime[j]==0){ mu[i*prime[j]]=0; break; } else mu[i*prime[j]]=-mu[i]; } }} int main(){ get_mu(100000); scanf("%d",&T); for (int t=1;t<=T;++t){ scanf("%d%d%d%d%d",&a,&b,&c,&d,&k); if (!k||!b||!d){ printf("Case %d: 0\n",t); continue; } if (b>d) swap(b,d); n=(int)b/k; m=(int)d/k; ans1=ans2=0; for (int i=1;i<=n;++i) ans1+=(LL)(n/i)*(m/i)*mu[i]; for (int i=1;i<=n;++i) ans2+=(LL)(n/i)*(n/i)*mu[i]; printf("Case %d: %I64d\n",t,ans1-ans2/2); }}
总结
强转了之后后面加个括号可能会出错233
0 0
- HDU1695 GCD(莫比乌斯反演)
- hdu1695 gcd 莫比乌斯反演
- [hdu1695][莫比乌斯反演]Gcd
- hdu1695 GCD(莫比乌斯反演)
- [HDU1695]GCD(莫比乌斯反演)
- hdu1695 GCD(莫比乌斯反演)
- [HDU1695]GCD(莫比乌斯反演)
- hdu1695 GCD(莫比乌斯反演)
- 【HDU1695】GCD(莫比乌斯反演+优化)
- 【HDU1695】GCD(莫比乌斯反演)
- [HDU1695]GCD(莫比乌斯反演+讲解)
- HDU1695 GCD 数论之 莫比乌斯反演
- 【HDU1695】GCD(莫比乌斯反演+容斥)
- HDU1695——GCD(莫比乌斯反演)
- hdu1695 GCD 学习莫比乌斯反演
- hdu1695 莫比乌斯反演
- hdu1695莫比乌斯反演
- hdu1695 莫比乌斯反演
- 抽样方法
- 政府兜售大数据和虚拟现实产业谁更不靠谱-2016年4月江西IDC排行榜与发展报告
- 华南理工大学计算机学子的一些感想
- 正则表达式验证中文
- poj 1236 Network of Schools 强联通分量Kosaraju
- [HDU1695]GCD(莫比乌斯反演)
- Python学习(一)
- AngularJS专题——路由
- HDU 1166 敌兵布阵
- 62. Unique Paths 动态规划算法浅谈
- 搜索二维矩阵
- Android WebView 缓存处理
- 子类父类构造方法执行顺序举例
- HDU1800 Flying to the Mars