每次最少分出一個,則最後每個堆的 石頭數量都是1, 共有sum(a[i])堆。而分出這些石頭共需要sum(a[i] - 1)次操作。對這個操作數進行奇偶判斷,若爲奇數則Alice勝,否則Bob必勝。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
int t, n;
scanf("%d", &t);
while (t--)
{
int sum = 0, temp;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &temp);
sum += (temp - 1);
}
if (sum & 1)
printf("Alice\n");
else
printf("Bob\n");
}
}