思路
枚举第一次选择的所有可能的情况,当第一次的情况确定后,就能获得这种情况能喝到的饮料数,取最大值即可
代码
#include<bits/stdc++.h>
using namespace std;
int t, n, a, b;
inline int pan(int x, int y)
{
int ans = n;
// b, a
int u, v;
while (x >= a || y >= b) {
u = x / a;//换b
v = y / b;//换a
ans += u + v;
x = x % a + v;
y = y % b + u;
}
return ans;
}
void solve()
{
cin >> n >> a >> b;
int ans = 0;
for (int i = 0; i <= n; ++i) {//第一次选择的情况
//取最大值
ans = max(ans, pan(i, n - i));
}
cout << ans << endl;
}
int main()
{
cin >> t;
while (t--) solve();
return 0;
}
京公网安备 11010502036488号