#include <cstdio> #include <algorithm> using namespace std; int gcd(int a,int b) { return b?gcd(b,a%b):a; } int n[100+10]; int main() { int t,maxn = 0; scanf("%d",&t); for(int i=0; i<t; i++) { scanf("%d",&n[i]); maxn = max(maxn,n[i]); } int high=maxn; for(int i=0; i<t-1; i++) { for(int j=i+1; j<t; j++) { int tem = gcd(n[i],n[j]); maxn = gcd(maxn,tem); } } int movestep = high/maxn - t; if(movestep&1) { printf("Alice\n"); } else { printf("Bob\n"); } return 0; }
一个从1~n的自然数集合,U,若一集合V,|V|<|U|,且元素∈V,all∈U,则需要再添加多少元素,有U 等价于 V。
元素个数:num = max in V / ged of all V - |V|.
Codeforces Round #201 (Div. 1) / 346A Alice and Bob
原文:http://www.cnblogs.com/Lxyan/p/5510326.html