Shirlies
宁静专注认真的程序媛~

思路是:通分后求分子的最小公倍数,在除以通分后的分母(看了别人的思路才知道分数的最小公倍数是这样求的,起初只是知道要求公倍数,但是不知道怎么求,汗,我可怜的数学啊~~~)

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

posted on 2012-01-18 10:07  Shirlies  阅读(370)  评论(0编辑  收藏  举报