fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. ios::sync_with_stdio(false);
  6. cin.tie(nullptr);
  7.  
  8. int T;
  9. cin >> T;
  10. while (T--) {
  11. int N;
  12. cin >> N;
  13. vector<int> A(N);
  14. for (int i = 0; i < N; i++) cin >> A[i];
  15.  
  16. // 각 비트별 등장 횟수
  17. vector<int> cnt(31, 0);
  18. for (int x : A)
  19. for (int b = 0; b < 31; b++)
  20. if (x >> b & 1)
  21. cnt[b]++;
  22.  
  23. // 가장 높은 비트에서 홀수 개의 1이 존재하는지 확인
  24. bool alice = false;
  25. for (int b = 30; b >= 0; b--) {
  26. if (cnt[b] % 2 == 1) {
  27. // 이 비트가 홀수 개라면,
  28. // 전체 중에서도 cnt[b] % 4 == 1 이면 Alice 승,
  29. // == 3 이면 Bob 승.
  30. if (cnt[b] % 4 == 1) alice = true;
  31. else alice = false;
  32. break;
  33. }
  34. }
  35.  
  36. cout << (alice ? "Alice\n" : "Bob\n");
  37. }
  38. }
Success #stdin #stdout 0s 5296KB
stdin
4
3
3 4 6
3
7 7 7
3
9 3 5
10
1 9 1 3 7 9 10 9 7 3
stdout
Alice
Bob
Alice
Alice