【HDU 1713】相遇周期

2018-10-04  本文已影响0人  Siding

相遇周期(题目链接)

思路

但是,笔者认为该题的描述是错误的,题目当中对分数的解释并不是周期。周期为每圈所花费的时间(单位为 天/圈),而题目中的分数的意义为每天能转多少圈(单位为 圈/天)。

代码

#include <iostream>
using namespace std;

//求最大公约数 
long long gcd(long long a, long long b){
    long long tmp = a % b;
    if(tmp == 0){
        return b;
    }
    return gcd(b, tmp);
}
 
//求最小公倍数 
long long lcm(long long a, long long b){
    return (a * b) / gcd(a, b);
}

int main(){
    char tmp;
    long long n, t, a1, b1, a2, b2, c, d;
    cin >> n;
    
    while(n--){
        cin >> a1 >> tmp >> b1 >> a2 >> tmp >> b2;  
        c = lcm(a1*b2, b1*a2);      //计算分子 
        t = gcd(c, b1 * b2);                //计算分子分母最大公约数 
        d = b1 * b2 / t;                        //分母约分 
        c /= t;                     //分子约分 
        if(d == 1){                 //判断分母是否为 1 
            cout << c << endl;
        }else{
            cout << c << tmp << d << endl;
        }
    }
        
    
    return 0;
} 
上一篇 下一篇

猜你喜欢

热点阅读