联想算法题-搬砖人

联想算法题-搬砖人

问题描述
小A和小B都是搬砖人,因为各自的身体素质不同,所以他们为自己制定了不同的小目标。小A可以一次搬a1块砖,但是每搬一次就要休息b1分钟,他的目标是一天搬c1块砖;同样的,小B可以一次搬a2块砖,但是每搬一次就要休息b2分钟,他的目标是一天搬c2块砖。
每个人情况不同,只要完成自己的目标就好,已知某天小A和小B同时开始搬砖,请问他们谁先完成自己的目标?如果是小A则输出‘A’,如果是小B则输出‘B’,如果两个人同时完成,则输出‘A&B’。

输入描述
第一行是一个整数T,表示数据组数(1≤T≤100)
接下来T行,每行有六个正整数a1,b1,c1,a2,b2,c2,含义如题所示。(a1,b1,c1,a2,b2,c2<=10^9)

输出描述
输出包含T行,每行一个字符串如题所示。

输入样例
2
7 9 19 9 1 89
7 9 95 4 5 9

输出样例
B
B

解题思路:
这个题的难点在于,怎么计算休息的时间,a = (c1/a1) + (c1 % a1 != 0 ? 1 : 0)得到的就是A要搬的次数
那么他休息的次数可以理解ta = (a - 1) * b1分钟,其他人也是同理。
得到最后的表达式ta = (c1 / a1 - 1) * b1 + (c1 % a1 != 0 ? b1 : 0)

#include<iostream>
using namespace std;
/*
算法思路:这个题的难点在于,怎么计算休息的时间,
a = (c1/a1) + (c1 % a1 != 0 ? 1 : 0)得到的就是A要搬的次数
那么他休息的次数可以理解ta = (a - 1) * b1分钟,其他人也是同理。
得到最后的表达式ta = (c1 / a1 - 1) * b1 + (c1 % a1 != 0 ? b1 : 0)
*/
int main()
{
    int t;
    int a1, b1, c1, a2, b2, c2;
    cin >> t;
    while(t --)
    {
        cin >> a1 >> b1 >> c1 >> a2 >> b2 >> c2;
        int ta = 0, tb = 0;
        ta = (c1 / a1 - 1) * b1 + (c1 % a1 != 0 ? b1 : 0);
        tb = (c2 / a2 - 1) * b2 + (c2 % a2 != 0 ? b2 : 0);
        
        if (ta == tb) cout << "A&B\n";
        else if (ta > tb) cout << "B\n";
        else cout << "A\n";
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_51447496/article/details/135205725