2025“钉耙编程”中国大学生算法设计春季联赛(2) |
题目描述
核心这里可以把1块蓝宝石当作2块红宝石,1个宝盒当作4块红宝石。
操作1相当于拿走1-3块红宝石
操作2相当于拿走1块红宝石
操作3相当于拿走2-3块红宝石
操作4相当于拿走3块红宝石
操作5相当于拿走2块红宝石
操作6相当于拿走3块红宝石
操作7相当于拿走1块红宝石
根据以上分析,这个问题就可以转化为巴什博弈了(可参考这篇博客 博弈论),即1堆n个石子每次最多取m个、至少取1个。
当n%4==0时 后手必胜。
#include <bits/stdc++.h>
using namespace std;
signed main()
{
int T = 1;
cin >> T;
while (T--)
{
int a, b, c;
cin >> a >> b >> c;
int sum = 0;
sum = a + b * 2 + c * 4;
if (sum % 4 == 0)
cout << "Bob" << endl;
else
cout << "Alice" << endl;
}
return 0;
}