hdu1695 GCD
来源:互联网 发布:钓鱼软件什么意思 编辑:程序博客网 时间:2024/06/18 16:17
转载请注明出处,谢谢http://blog.csdn.net/bigtiao097?viewmode=contents
题意:
给定整数a,b,c,d,k,a=c=1求
思路:
这个题比bzoj2818 稍微复杂一点,可以看一下这里
由于a,b不相等,不能像bzoj2818一样用欧拉函数来做了
莫比乌斯反演轻松解决
设
设
这样就有了
然后利用反演公式,因为
根据上述的反演公式直接计算就可以了
还有一点就是这个题要求(x,y)和(y,x)视为相同的,所以需要去重,怎么去呢,其实很简单
我们在算完
具体代码如下:
Result:Accepted
#include<bits/stdc++.h>typedef long long ll;using namespace std;const int maxn=1e5+5;bool vis[maxn];int prime[maxn];int mu[maxn];int n,a,b,c,d,k;int tot;ll ans1,ans2;int Case;void mobius(){ memset(vis,0,sizeof vis); mu[1] = 1; tot = 0; for(int i = 2; i <maxn; i++) { if( !vis[i] ){ prime[tot++] = i; mu[i] = -1; } for(int j = 0; j < tot; j++) { if(i * prime[j] >=maxn) break; vis[i * prime[j]] = true; if( i % prime[j] == 0) { mu[i * prime[j]] = 0; break; } else mu[i * prime[j]] = -mu[i]; } }}int main(){ ios::sync_with_stdio(false); mobius(); int T; cin>>T; while(T--) { ans1 = 0; ans2 = 0; cin>>a>>b>>c>>d>>k; cout<<"Case "<<++Case<<": "; if(k==0) { cout<<0<<endl; continue; } n = min(b,d); for(int x=k;x<=n;x+=k) { ans1+= 1LL*mu[x/k]*(b/x)*(d/x); ans2+= 1LL*mu[x/k]*(n/x)*(n/x); } ans2--; cout<<ans1-ans2/2<<endl; }}
阅读全文
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 GCD(莫比乌斯反演)
- hdu1695--GCD(欧拉函数+容斥原理)
- hdu1695 GCD(容斥原理+欧拉函数)
- JQuery 选择器
- 欧拉角表示方式的理解
- Hive基本操作(二)——Hive实战案例-级联求和
- Android零碎知识点
- javaseday20补充(io 续写 换行 FileWriter 输出个文件)
- hdu1695 GCD
- 适合研发团队的几个项目管理软件对比
- CefSharp.Wpf 添加flash与cookie支持
- 【leetcode】191. Number of 1 Bits(easy)
- 36对象6---history
- sem_init sem_post sem_destroy信号量介绍
- 邮票codevs2033
- 分布式架构设计之Rest API HAL
- hadoop缺少winutils.exe的bug