您的位置:首页 > 其它

Codeforces Round #201 (Div. 1) A. Alice and Bob(数学)

2016-07-26 21:16 246 查看
题目地址:http://codeforces.com/problemset/problem/346/A

思路:最终无法再选择两个数,说明最后形成了一个公差为d的等差数列,即为d,d+d,d+2*d,……,d+(n-1)*d 。所以,只需求出原始数列所有数的最大公约数即可求出公差。最终数列元素个数=数列元素最大值/公差,减去n即为比赛过程中新增加的元素。由于A先开始游戏,所以如果新增加元素为奇数则A赢,否则B赢。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[150];
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int gcd=a[0],maxx=a[0];
for(int i=1;i<n;i++)
{
gcd=__gcd(gcd,a[i]);
maxx=max(maxx,a[i]);
}
int step=maxx/gcd-n;
printf("%s\n",step&1?"Alice":"Bob");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: