Link:
代码量很少的一套思维题
A:
试一试发现最后状态一定是所有$min,max$间$gcd$的倍数
直接判断数量的奇偶性即可
#include <bits/stdc++.h> using namespace std; #define X first #define Y second #define pb push_back typedef double db; typedef long long ll; typedef pair<int,int> P; int n,mx,x,gcd; int GCD(int x,int y){return !y?x:GCD(y,x%y);} int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&x),mx=max(mx,x),gcd=GCD(gcd,x); if(!gcd) gcd=1; puts((mx/gcd-n)%2?"Alice":"Bob"); return 0; }