링크 : https://codeforces.com/contest/346/problem/A
그것은, 그래서 여름 휴가에 지루 그렇지? 그래서 앨리스와 밥은 재생하는 새로운 게임을 발명했다. 규칙은 다음이다. 첫째, 그들은 세트 얻을 N 다른 정수. 그리고 그들은 다음과 같은 움직임을 만들기 위해 교대로. 각 이동하는 동안, 앨리스 또는 밥 (회전 현재있는 선수) 중 하나가 두 개의 다른 정수 선택할 수 있습니다 X 와 Y를 세트가 절대 차이를 포함하지 않도록, 집합에서 | X - Y |. | 그런 다음이 플레이어는 정수 추가 X - Y | 세트에 (따라서 하나 세트의 크기가 증가).
현재 플레이어가 유효한 움직임이없는 경우, 그 (또는 그녀) 게임을 잃는다. 문제는 두 선수가 최적의 상태로 재생할 경우 마지막으로 게임을 이길 사람입니다. 앨리스가 항상 먼저 이동하는 것을 기억하십시오.
입력
첫 번째 라인은 정수 포함 N (2 ≤ N 세트에서 요소의 초기 번호 - ≤ 100). 두 번째 라인에 포함 된 N 개의 별개의 공간으로 구분 정수 1 2, ..., N (1 ≤ I ≤ 109) - 세트의 요소.
산출
우승자의 이름이 한 줄을 인쇄합니다. 앨리스는, 인쇄 "앨리스"를이기는 경우에, 그렇지 않으면 (따옴표없이) "밥"을 인쇄 할 수 있습니다.
예
입력
부
(2) (2) (3)
산출
부
앨리스
입력
부
2 5 3
산출
부
앨리스
입력
부
3 5 6 7
산출
부
단발
노트
첫 번째 테스트 샘플을 고려하십시오. , 2, 3을 선택하고 다음 세트에 1을 추가하는 것입니다 앨리스 먼저 이동하고, 단지 그녀가 할 수있는 이동합니다. 다음 밥의 움직임은 더 이상 유효한 움직임이 없기 때문에 우승자는 앨리스입니다.
코드 :
#include<bits/stdc++.h>
using namespace std;
long long n,t,l,j,r,k,d,ans,max1=0,mod=1e9+7;
long long a[200005],b[200005];
map<long long,long long>m;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
k=__gcd(a[1],a[n]);
for(int i=2;i<n;i++)
{
k=__gcd(k,a[i]);
}
if((a[n]/k-n)%2==0)
cout<<"Bob";
else
cout<<"Alice";
}