模版 求两个数的最大公约数
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
hdu 2503
复制代码
- #include<stdio.h>
- int gcd(int a,int b)
- {
- return b==0?a:gcd(b,a%b);
- }
- int main()
- {
-
- int t,a,b,c,d,n,m,k;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d%d%d",&a,&b,&c,&d);
- n=gcd(b,d);
- m=a*d/n+c*b/n;
- k=gcd(m,b*d/n);
- printf("%d %d\n",m/k,b*d/n/k);
- }
- return 0;
- }
|
hdu 1713
复制代码
- #include<stdio.h>
- __int64 gcd(__int64 a,__int64 b)
- {
- return b==0?a:gcd(b,a%b);
- }
- int main()
- {
-
- __int64 t,a,b,c,d,n,k,a1,a2,a3;
- scanf("%I64d",&t);
- while(t--)
- {
- scanf("%I64d%*c%I64d %I64d%*c%I64d",&a,&b,&c,&d);
- n=gcd(a*d,b*c);
- k=gcd(a*b*c*d,b*d*n);
-
- if(n*b*d==k) printf("%I64d\n",a*b*c*d/k);
- else printf("%I64d/%I64d\n",a*b*c*d/k,n*b*d/k);
- }
- return 0;
- }
|
hdu 2504
复制代码
-
- #include<stdio.h>
- int gcd(int a,int b)
- {
- return b==0?a:gcd(b,a%b);
- }
- int main()
- {
-
- int t,a,b,c,d,n,m,k,i;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&a,&b);
- c=b+1;
- while(1)
- {
- if(gcd(a,c)==b) break;
- c++;
- }
- printf("%d\n",c);
- }
- return 0;
- }
|