您的位置:首页 > 其它

最大公约数和最小公倍数

2012-07-28 15:04 260 查看
模版 求两个数的最大公约数

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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: