您的位置:首页 > 编程语言 > Go语言

HDU-5512 Pagodas(GCD)

2015-11-01 00:12 381 查看
题目大意:有N个点,刚开始给出两个点a,b(a != b)

现在有两个人再玩一个游戏,游戏规则如下:每次只能选择a + b或a - b或b -a的中的任意一个没被选中的符合[1,n]的点

问最后谁一个点也选不了了

解题思路:能被选的点其实只有n / GCD(a,b),为什么呢,因为初始的a和b决定了塔的间距,最后只要判奇偶即可

#include <cstdio>
#include <cstring>

int n, a, b, cas = 1;
int gcd(int a, int b) {
if (a % b == 0) return b;
return gcd(b, a % b);
}

void solve() {
scanf("%d%d%d", &n, &a, &b);
if (a < b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int mod = gcd(a, b);
if ((n / mod) % 2) printf("Case #%d: Yuwgna\n", cas++);
else printf("Case #%d: Iaka\n", cas++);
}

int main() {
int test;
scanf("%d", &test);
while (test--) solve();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: