补题链接:https://acm.hdu.edu.cn/showproblem.php?pid=7061
Nim >^<
题解思路可参考
code
using namespace std;
const int N = 1e7 + 10;
typedef long long ll;
bool st[N];
int primes[N], cnt, sg[N];
void init(){
    st[0] = 1;
    st[1] = 1;
    for (int i = 2; i < N; ++i) {
        if(!st[i]) {
            primes[cnt++] = i;
            sg[i] = 1;
        }
        for (int j = 0; primes[j] <= (N-1) / i; ++j) {
            st[primes[j] * i] = true;
            sg[i * primes[j]] = sg[i] + 1;
            if(i % primes[j] == 0){
                break;
            }
        }
    }
}
int main(){
    int t, n, a;
    ll sum;
    init();
    scanf("%d", &t);
    while(t--){
        scanf("%d", &n);
        sum = 0;
        for (int i = 1; i <= n; ++i) {
            scanf("%d", &a);
            if(a == 1) continue;
            sum ^= sg[a];
        }
        if(sum){
            printf("Alice\n");
        }else{
            printf("Bob\n");
        }
    }
    return 0;
}                
                









