HDU 1695 莫比乌斯反演
2015-04-13 18:03
239 查看
题目大意:
从1~b中取一个数作为x , 1~d中取一个数作为y
令gcd(x,y) = k 的取法有多少种
这里我们可以用莫比乌斯函数来解决问题
这里用到的公式是[gcd(x,y)==1] = Σ(del|gcd(x,y))mu(del)
Σ(1<=x<=b)Σ(1<=y<=d)[gcd(x,y)==k]
= Σ(1<=x<=b/k)Σ(1<=y<=d/k)[gcd(x,y)==1]
= Σ(1<=x<=b/k)Σ(1<=y<=d/k) Σ(del|gcd(x,y)) mu(del)
=Σ(1<=x<=b/k & del|x)Σ(1<=y<=d/k & del|y) mu(del)
从1~b中取一个数作为x , 1~d中取一个数作为y
令gcd(x,y) = k 的取法有多少种
这里我们可以用莫比乌斯函数来解决问题
这里用到的公式是[gcd(x,y)==1] = Σ(del|gcd(x,y))mu(del)
Σ(1<=x<=b)Σ(1<=y<=d)[gcd(x,y)==k]
= Σ(1<=x<=b/k)Σ(1<=y<=d/k)[gcd(x,y)==1]
= Σ(1<=x<=b/k)Σ(1<=y<=d/k) Σ(del|gcd(x,y)) mu(del)
=Σ(1<=x<=b/k & del|x)Σ(1<=y<=d/k & del|y) mu(del)
#include <cstdio> #include <cstring> #include <iostream> using namespace std; #define ll long long #define N 100010 int mu , prime ; bool check ; void getMu(int n) { memset(check , 0 , sizeof(check)); mu[1] = 1; int tot = 0; for(int i=2 ; i<=n ; i++){ if(!check[i]){ prime[tot++]=i; mu[i] = -1; } for(int j=0 ; j<tot ; j++){ if(i*prime[j]>n) break; check[i*prime[j]] = true; if(i % prime[j] == 0){ mu[i*prime[j]] = 0; break; }else{ mu[i*prime[j]] = -mu[i]; } } } } int main() { int a , b , c , d , k , T , cas=0; scanf("%d" , &T); getMu(100000); while(T--) { scanf("%d%d%d%d%d" , &a , &b , &c , &d , &k); if(k == 0){ printf("Case %d: 0\n" , ++cas); continue; } a/=k , b/=k , c/=k , d/=k; int maxn = b; if(b<d){ int t=b; b=d , d=t; maxn = b; } ll ans = 0; for(int i=1 ; i<=maxn ; i++){ int t1 = b/i , t2=d/i; ans = ans+(ll)t1*t2*mu[i]; } //计算重复的 ll tmp = 0; for(int i=1 ; i<=maxn ; i++){ int t1 = d/i , t2 = d/i; tmp = tmp+(ll)t1*t2*mu[i]; } ans = ans - (tmp-1)/2; printf("Case %d: %lld\n" , ++cas , ans); } return 0; }
相关文章推荐
- HDU 1695 GCD [莫比乌斯反演]
- HDU 1695 GCD (容斥 + 莫比乌斯反演)
- HDU 莫比乌斯反演 1695 GCD
- HDU1695 GCD 数论之 莫比乌斯反演
- hdu 1695: GCD 【莫比乌斯反演】
- HDU - 1695 GCD 莫比乌斯反演
- HDU 1695 GCD(莫比乌斯反演,入门)
- hdu 1695 莫比乌斯反演
- HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演
- hdu1695 莫比乌斯反演
- hdu 1695 GCD(莫比乌斯反演+分块模板)
- hdu1695 莫比乌斯反演
- HDU 1695 GCD (莫比乌斯反演入门学习小结)
- 完全数+莫比乌斯反演hdu 1695+伪随机数 poj2183
- HDU 1695 GCD【莫比乌斯反演】
- hdu 1695 GCD 欧拉函数+容斥 ||莫比乌斯反演
- hdu 1695 莫比乌斯反演入门题
- hdu 1695 容斥原理或莫比乌斯反演
- hdu 1695 莫比乌斯反演
- hdu 6134 Battlestation Operational 莫比乌斯反演