hdu 1713 相遇周期
其实,说得简单明了的一点,就是求俩个分数的最小公倍数;
方法:先将俩个分数转换成最简形式,在求出俩个分母的最大公约数最为最小公倍数的分母,求出俩个分子的最小公倍数做为最小公倍数的分子即可;
当我把我的代码改得面目全非的时候,我才发现了我WA的原因,
求最小公倍数的时候
int lcd(int u,int v,int h)
{
return(u*v/h);//这步溢出了
}
应该改为
int lcd(int u,int v,int h)
{
return(u/h*v);
}
#include<iostream>
using namespace std;
int n;
int hcf(int a,int b)
{
int r=0;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return(a);
}
int lcd(int u,int v,int h)
{
return(u/h*v);
}
int main()
{
int a,b,c,d;
scanf("%d",&n);
while(n--)
{
scanf("%d/%d",&a,&b);
scanf("%d/%d",&c,&d);
int h1=hcf(a,b);
a/=h1;b/=h1;
int h2=hcf(c,d);
c/=h2;d/=h2;
if(hcf(b,d)==1)printf("%d\n",lcd(a,c,hcf(a,c)));
else printf("%d/%d\n",lcd(a,c,hcf(a,c)),hcf(b,d));
}
return 0;
}

浙公网安备 33010602011771号