hdu 1695 莫比乌斯反演
来源:互联网 发布:mac照片占用空间 编辑:程序博客网 时间:2024/06/10 07:34
链接:戳这里
GCD
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Problem Description
Given 5 integers: a, b, c, d, k, you're to find x in a...b, y in c...d that GCD(x, y) = k. GCD(x, y) means the greatest common divisor of x and y. Since the number of choices may be very large, you're only required to output the total number of different number pairs.
Please notice that, (x=5, y=7) and (x=7, y=5) are considered to be the same.
Yoiu can assume that a = c = 1 in all test cases.
Input
The input consists of several test cases. The first line of the input is the number of the cases. There are no more than 3,000 cases.
Each case contains five integers: a, b, c, d, k, 0 < a <= b <= 100,000, 0 < c <= d <= 100,000, 0 <= k <= 100,000, as described above.
Output
For each test case, print the number of choices. Use the format in the example.
Sample Input
2
1 3 1 5 1
1 11014 1 14409 9
Sample Output
Case 1: 9
Case 2: 736427
Hint
For the first sample input, all the 9 pairs of numbers are (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 5), (3, 4), (3, 5).
题意:给出[1,b]和[1,d]两个区间,分别在区间内选x,y使gcd(x,y)==k 求满足的x,y的的对数
思路:当然了 gcd(x/k,y/k)==1 嗯 显然就是莫比乌斯反演了 具体的看上一篇博客把
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include <ctime>#include<queue>#include<set>#include<map>#include<stack>#include<iomanip>#include<cmath>#define mst(ss,b) memset((ss),(b),sizeof(ss))#define maxn 0x3f3f3f3f#define MAX 100010///#pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef unsigned long long ull;#define INF (1ll<<60)-1using namespace std;int a,b,c,d,k;int mu[MAX],prime[MAX],vis[MAX],cnt;void Moblus(){ cnt=0; mu[1]=1; mst(vis,0); for(int i=2;i<=MAX;i++){ if(!vis[i]){ mu[i]=-1; prime[++cnt]=i; } for(int j=1;j<=cnt;j++){ if(i*prime[j]>MAX) break; vis[i*prime[j]]=1; if(i%prime[j]==0){ mu[i*prime[j]]=0; break; } else mu[i*prime[j]]=-mu[i]; } }}int main(){ Moblus(); int T; scanf("%d",&T); for(int cas=1;cas<=T;cas++){ scanf("%d%d%d%d%d",&a,&b,&c,&d,&k); printf("Case %d: ",cas); if(k==0){ cout<<0<<endl; continue; } if(b>d) swap(b,d); b/=k;d/=k; ll ans1=0,ans2=0; for(int i=1;i<=b;i++){ ans1+=(ll)mu[i]*(b/i)*(d/i); } for(int i=1;i<=b;i++){ ans2+=(ll)mu[i]*(b/i)*(b/i); } printf("%I64d\n",ans1-(ans2/2)); } return 0;}
0 0
- hdu 1695 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- HDU 1695 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- hdu 5072 莫比乌斯反演
- HDU 5656 (莫比乌斯反演)
- HDU 4675 (莫比乌斯反演)
- hdu 5212(莫比乌斯反演)
- HDU 6053 莫比乌斯反演
- hdu 6053-莫比乌斯反演
- HDU 6134 莫比乌斯反演
- HDU 6134 莫比乌斯反演
- hdu 6134(莫比乌斯反演)
- HDU 6053 莫比乌斯反演
- HDU-1695-GCD(莫比乌斯反演)
- hdu 1695 GCD(莫比乌斯反演)
- Java设计模式 -- 适配器模式
- C/C++中指针、引用、数组、链表的区别
- Hrbust1658一笔画
- 星号图
- HDU 2063 过山车 (二分匹配 -匈牙利算法)
- hdu 1695 莫比乌斯反演
- uva10128(Queue)
- Leetcode 47. Permutations II
- pat乙级总结
- Centos下本地连接postgresql时出现认证错误的问题
- 鼠标移入/移出改变图片透明度_jQuery效果
- 一起talk C栗子吧(第一百三十二回:C语言实例--从内存的角度看进程和线程)
- 第五周项目1 三角形类的练习(5)
- leetcode 74. Search a 2D Matrix