联想算法题-搬砖人
问题描述
小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; }