原题链接点 这里
首先,我们知道奇偶性存在如下规律:
- 奇数-奇数=偶数
- 偶数-奇数=奇数
- 奇数×奇数=奇数
- 偶数×偶数=偶数
- 奇数×偶数=偶数
证明如下:
由上面性质可得:
由上面分析可知无论a和x的奇偶性如何,A和B所能取的石子数均为奇数。那么:
- 如果n为奇数:
A拿完石子后剩下偶数个石子(奇数-奇数=偶数),有可能会剩下0个石子(最小的偶数是0,此时A嬴),B拿完之后剩余的一定是奇数(偶数-奇数=奇数),故B拿完之后至少剩下1个石子(因为最小的奇数为1),之后A再拿走最后一个石子,A嬴。
故当n为奇数时,只可能A嬴。 - 如果n为偶数:
A拿完之后剩余的一定是奇数(偶数-奇数=奇数),故B拿完之后至少剩下1个石子(因为最小的奇数为1)。轮到B,B拿完石子后剩下偶数个石子(奇数-奇数=偶数),有可能会剩下0个石子(最小的偶数是0,此时B嬴)。
故当n为偶数时,只可能B嬴。
综上所诉,当n为奇数时,A嬴;当n为偶数时,B嬴。
理清本质之后,代码非常简单:
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, m;
int a[N];
void solve() {
int a, b;
cin >> a >> b >> n;
if (n % 2) cout << "Alice" << endl;
else cout << "Bob" << endl;
}
int main() {
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
int t = 1;
cin >> t;
while (t--)
solve();
return 0;
}