思路是:通分后求分子的最小公倍数,在除以通分后的分母(看了别人的思路才知道分数的最小公倍数是这样求的,起初只是知道要求公倍数,但是不知道怎么求,汗,我可怜的数学啊~~~)
#include "stdio.h"
__int64 gcd(__int64 a,__int64 b)
{
if(a%b==0)
return b;
else
return gcd(b,a%b);
}
int main()
{
int T;
__int64 t1,q1,t2,q2,ts,kq,t;
scanf("%d",&T);
while(T--)
{
scanf("%I64d/%I64d %I64d/%I64d",&q1,&t1,&q2,&t2);
kq=gcd(t1,t2);
t=t1/kq*t2;//通分后的分母
q1=t2/kq*q1;//通分后的分子
q2=t1/kq*q2;//通分后的分子
ts=q1/gcd(q1,q2)*q2;//分子的最小公倍数
if(t==gcd(t,ts))
printf("%I64d\n",ts/gcd(t,ts));
else
printf("%I64d/%I64d\n",ts/gcd(t,ts),t/gcd(t,ts));
}
return 0;
}