题目链接:
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;
}