CodeForces 347C Alice and Bob

来源:互联网 发布:胡金铨 知乎 编辑:程序博客网 时间:2024/06/04 18:48

在一个有n个不同数的集合里面,Alice 和Bob分别任选两个数,x,y
要求|x-y|不在集合中,如果有一个人不能选,则输了,Alice 先选择
求最后的胜利者

分析,对于给定的一个序列,最后要满足的条件的序列一定为
d,2d ,3d……
所以 只要求出整个序列的GCD 再用最大值/gcd 得到的个数-N 再看奇偶就可以了

虽然这道题这样看是一个水题,但是非常巧妙,不容易想到。

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#include<stack>#include<bitset>#include<cstdlib>#include<cmath>#include<set>#include<list>#include<deque>#include<map>#include<queue>using namespace std;typedef long long ll;const double PI = acos(-1.0);const double eps = 1e-6;const int INF = 0x3f3f3f3f;const int maxn = 105;int T,n,m;ll ans=0;int a[maxn];int main(){    scanf("%d",&n);    int maxx=-INF;    for(int i=1;i<=n;i++)    {        scanf("%d",&a[i]);        maxx=max(maxx,a[i]);    }    int ans=__gcd(a[1],a[2]);    for(int i=3;i<=n;i++)    {        ans=__gcd(ans,a[i]);    }    int k=maxx/ans-n;    if(k%2) printf("Alice\n");    else puts("Bob");    return 0;}