E

Anonymous
c_cpp
02/28/2026 12:22 PM
2.3 KB
91
Indexable
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
#define int long long
const int N = 1e6 + 10;
const int inf = 1e15;
const int mod = 998244353;

vector<int> spf(N);

inline void solve(){
    
    int n;cin >> n;
    vector<int> v(n);

    for(auto &x : v) cin >> x;

    bool ok = 1;

    for(int i = 0;i < n - 1;i += 1){
        ok &= (v[i] <= v[i + 1]);
    }

    if(ok){
        cout << "Bob";
        return;
    }

    auto check = [&](int cur){
        int cnt = 0, last = 1;
        
        while(cur != 1){
            int s = spf[cur];
            while(cur % s == 0){
                cur /= s;
            }

            last = s;
            cnt += 1;
        }

        return make_pair((cnt <= 1), last);
    };  
    

    for(auto &x : v){
        if(spf[x] != x && !check(x).first){
            cout << "Alice";
            return;
        }
    }

    int mx = 0;

    for(auto &x : v){
        if(mx > check(x).second){
            cout << "Alice";
            return;
        }

        mx = max(mx, check(x).second);
    }

    cout << "Bob";

}

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    for(int i = 0;i < N;i += 1){
        spf[i] = i;
    }
    
    spf[1] = 10;

    for(int i = 2;i < N;i += 2){
        spf[i] = 2;
    }
    for(int i = 3;i * i < N;i += 1){
        if(spf[i] == i){
            for(int j = i * i;j < N;j += i){
                if(spf[j] == j){
                    spf[j] = i;
                }
            }
        }
    }

    int t = 1;
    cin >> t;
    while(t--){
        solve();
        cout << '\n';
    }
    return 0;
}
Editor is loading...
Leave a Comment