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

Codeforces Round #201 (Div. 2) C 数论

时间:2016-05-12 14:10:09      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

Problem:
给你n(n<=100)个正数,每次从中取任意两个数,他们的差值如果在集合中没有就加入集合中,问最后集合中元素个数的奇偶性?
Analyse:

  • 首先考虑只有两个数的情况,发现两个数x,y(x>y),可以观察到连续执行操作,可以生成的数的集合是
    {k?gcd(x,y) | k=1,2,.. k?gcd(x,y)<=y}
  • 然后考虑有第三个数Z的情况,因为前面的两个数,极其生成的所有数的最大公约数都是gcd(x, y),
    所以加入第三个数之后这个集合的新的最大公约数是gcd(gcd(x,y),Z),然后生成集合是以这个最大公约数的倍数来生成.
  • ……..
  • 归纳到n个数,就是以最大的数为上界,所有n个数的最大公约数来填充的集合,元素个数为:
    max{xi | 1<=i<=n}gcd{x1,x2,...xn}
    .
/**********************jibancanyang**************************
 *Author*        :jibancanyang
 *Created Time*  : 二  5/10 10:57:35 2016
 *File Name*     : jy.cpp

**Code**:
***********************1599664856@qq.com**********************/

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <stack>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef unsigned long long ull;
vector<int> vi;
#define pr(x) cout << #x << ": " << x << "  " 
#define pl(x) cout << #x << ": " << x << endl;
#define pri(a) printf("%d\n",(a));
#define xx first
#define yy second
#define sa(n) scanf("%d", &(n))
#define sal(n) scanf("%lld", &(n))
#define sai(n) scanf("%I64d", &(n))
#define vep(c) for(decltype((c).begin() ) it = (c).begin(); it != (c).end(); it++) 
const int mod = int(1e9) + 7, INF = 0x3fffffff;
const int maxn = 1e5 + 13;

int gcd(int a, int b) {
    if (!b) return a;
    return gcd(b, a % b);
}


int main(void)
{
    int n;
    while (cin >> n) {
        int x = 0;
        cin >> x;
        int g = x;
        for (int i = 1; i < n; i++) {
            int y; cin >> y;
            x = max(y, x);
            g = gcd(g, y);
        }
        if ( (x / g - n) % 2) cout << "Alice" << endl;
        else cout << "Bob" << endl;
    }

    return 0;
}

Codeforces Round #201 (Div. 2) C 数论

标签:

原文地址:http://blog.csdn.net/jibancanyang/article/details/51361940

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