A. 앨리스와 밥

링크 : 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";
	
} 

 

게시 된 137 개 원래 기사 · 원의 찬양 (15) · 전망 9905

추천

출처blog.csdn.net/Luoriliming/article/details/104017807