hdu acm-step 2.1.3 相遇周期

  本题题意:给出两个卫星分数形式的速度,求它们的相遇周期。

  

#include <cstdio>
#define ll long long
using namespace std;
ll gcd(ll a,ll b)
{
        ll r;
        while(b)
        {
                r = a%b;
                a = b;
                b = r;
        }
        return a;
}

ll lcm(ll a,ll b)
{
        return a*b/gcd(a,b);
}
int main()
{
        int T;
        scanf("%d",&T);
        while(T--)
        {
                ll a,b,c,d;
                scanf("%lld/%lld%lld/%lld",&a,&b,&c,&d);
                a = a*d;
                c = c*b;
                ll p = lcm(a,c);
                ll q = b*d;
                if(p%q == 0)printf("%lld\n",p/q);
                else{ll t = gcd(p,q);printf("%lld/%lld\n",p/t,q/t);};
        }
        return 0;
}

这道题一到手我整个人都是懵的...相遇周期是啥,完全不懂。后来百度了才知道就是求最小倍数,不过是分数形式的.

首先把通分,然后求出分子的最小公倍数lcm,若lcm可以整除分母,那么打印整数结果,否则约分后输出分数结果。

 

posted @ 2017-08-19 20:45  mtl6906  阅读(143)  评论(0编辑  收藏  举报