Codeforce 346A. Alice and Bob

Posted legend_PawN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforce 346A. Alice and Bob相关的知识,希望对你有一定的参考价值。

Codeforce346A

这是一道数学脑洞题,题目的大意就是给定n个数,每一次都从这些数中选出两个数 x,y 并将 |xy| 添加进入集合中,问最后集合稳定时候需要多少步操作。(当然题目是用一个博弈的问题作为背景)

在给定的样例中,我们发现,其实最后只要形成 1,2,3n 这样的一个序列最终的集合就稳定了,但是我们发现这是一种特殊的情况。
同样 2,4,62n 也是稳定

所以,在给定的n个数中,我们需要知道每两个数的跨度的 gcdx,y 从而确定最终集合稳定下来时候的元素个数.
如果 gcd=1 ,最终就形成 1234n 这样一个序列
同样如果 gcd=2 ,形成 246n 这样的序列
以此类推

AC代码:

#include <bits/stdc++.h>
using namespace std;
int a[105];
int gcd(int a,int b)
    return b==0 ? a :gcd(b,a%b);

int main()
   // freopen("input.txt","r",stdin);
    int n;
    while(~scanf("%d",&n))
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        sort(a,a+n);
        bool flag=true;
        int temp=a[0];
        for(int i=0;i<n-1;i++)
            temp=gcd(temp,a[i+1]-a[i]);
        int ans=a[n-1]/temp-n;
        if(ans%2)
            cout<<"Alice"<<endl;
        else
            cout<<"Bob"<<endl;
    
    return 0;

以上是关于Codeforce 346A. Alice and Bob的主要内容,如果未能解决你的问题,请参考以下文章

codeforces_346A Alice and Bob(数学)

Codeforces Round #201 (Div. 1) / 346A Alice and Bob

CodeForces - 346A Alice and Bob博弈

CodeForces - 346A Alice and Bob博弈

Codeforces 346A Alice and Bob 博弈

Codeforces - 346A - Alice and Bob - 简单数论