HDU 5512 Pagodas【博弈】

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5512

题意:

给定集合,最初有两个数a,b,如果两个人依次使用集合中的元素相加减,如果得到的数均不在在[1,n]中,则该人输,否则将新数放到集合中,游戏继续。

分析:

看8 6 8这组,发现只有偶数才能被取到,大胆猜能选的数都是最初的两个数的gcd,判断下选出的数的个数模2即可。

代码:

#include<iostream>
using namespace std;
int gcd(int a, int b)
{
    return b?gcd(b, a % b):a;
}
int main (void)
{
    int t;cin>>t;
    int n, a, b;
    int cnt = 1;
    while(t--){
        cin>>n>>a>>b;
        cout<<"Case #"<<cnt++<<": ";
        int ans = n / gcd(a, b);
        if(ans & 1) cout<<"Yuwgna"<<endl;
        else cout<<"Iaka"<<endl;
    }
    return 0;
}
posted @ 2016-04-09 00:22  zhuyujiang  阅读(123)  评论(0)    收藏  举报