zcmu-1134: 青蛙约会(速度差~~)

 

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 409  Solved: 38
[Submit][Status][Web Board]

Description

 

两只青蛙在一个点,但是他们想要来个久别胜新婚的约会,于是他们出发,朝同一个方向绕圈跳,我们求出他们相遇的时间

Input

 

输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两组正整数,用空格隔开。每组包含两个正整数,表示跳n圈需要的秒数(1/2,表示跳2圈要1秒),用'/'隔开。

Output

 

对于每组测试数据, 输出它们的下次相遇时间,如果相遇周期是整数则用整数表示,否则用最简分数表示。

 

Sample Input

2 1/2 3/4 3/4 6/7

Sample Output

3/2 6

 

【题意简化】

1.相遇的问题就是跟速度差有关啦~ a/b c/d 这样输入的,速度差=b/a - d/c,通分一下,然后求个倒数就是答案啦~

2.化成最简形式就是同时除以个最大公因数

3.注意:两个速度化简后相等的要写1秒相遇,我刚开始写0秒wa了。。。

【通过代码】

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <map>
#include <list>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <iostream>
#include <sstream>
#define mem(a,b) memset(a,b,sizeof(a))
#define cs cout<<"-----"<<endl;
using namespace std;
typedef long long ll;
int gcd(int a, int b)
{
    return b == 0 ? a : gcd(b, a % b);
}
int main()
{
    int t,a,b,c,d;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d/%d %d/%d",&a,&b,&c,&d);
        int f = abs(b*c-a*d);
        if(!f) cout<<1<<endl;
        else
        {
            if(a*c%f == 0) printf("%d\n",(a*c)/f);
            else
            {
                int e = gcd(a*c,f);
                printf("%d/%d\n",a*c/e,f/e);
            }
        }
        
    }
    return 0;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值