码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-01-27 21:54:18      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:pac   names   怎么   gcd   有关   com   element   class   一个   

http://codeforces.com/problemset/problem/346/A

观察了一下,猜测和他们的最大公因数有关,除以最大公因数前后结果是不会变的。

那么怎么证明一定是有n轮呢?我猜就是因为现在至少有几个是互质的,所以总是可以构造出1?具体怎么证明呢?还是看看别人的思路吧……

首先最终停止的状态一定是一个等差数列,这个是毫无疑问的。设首项为d,那么肯定停止于d,2d,3d,...,n,那么很显然d就是他们的最大公因数啊……对哦?!

#include<bits/stdc++.h>
using namespace std;
#define ll long long

int n;
int a[105];

int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }

    int g=a[0];
    for(int i=1;i<n;i++){
        g=__gcd(g,a[i]);
    }

    for(int i=0;i<n;i++){
        a[i]/=g;
    }

    int maxa=*max_element(a,a+n);

    int d=maxa-n;
    if(d%2)
        puts("Alice");
    else
        puts("Bob");

}

 

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

标签:pac   names   怎么   gcd   有关   com   element   class   一个   

原文地址:https://www.cnblogs.com/Yinku/p/10327661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!