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

来源:互联网 发布:俊平大魔王知乎 编辑:程序博客网 时间:2024/06/14 06:18

题目地址: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;}


0 0
原创粉丝点击