HDU 5512 Pagodas (博弈论、找规律)

来源:互联网 发布:阿里云tv输入法apk 编辑:程序博客网 时间:2024/06/05 03:26

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5512


题意:有n个庙经过长时间风吹雨打需要修补,只有两座(被标记为a,b)完好无损不需要修补,有两个和尚轮流去修补这n-2个庙,每个和尚每次只能修补一个庙标记为i,并要求i满足i=j+k或者i=j-k,每个庙只能被修建一次;其中j和k代表已经修建好的庙,Yuwgna先开始,问最后谁不能修建谁输;


看看样例就差不多能找到规律了。

Sample Input
16
2 1 2
3 1 3
67 1 2
100 1 2
8 6 8
9 6 8
10 6 8
11 6 8
12 6 8
13 6 8
14 6 8
15 6 8
16 6 8
1314 6 8
1994 1 13
1994 7 12
 


Sample Output
Case #1: Iaka
Case #2: Yuwgna
Case #3: Yuwgna
Case #4: Iaka
Case #5: Iaka
Case #6: Iaka
Case #7: Yuwgna
Case #8: Yuwgna
Case #9: Iaka
Case #10: Iaka
Case #11: Yuwgna
Case #12: Yuwgna
Case #13: Iaka
Case #14: Yuwgna
Case #15: Iaka
Case #16: Iaka


就是求个最大公约数然后判断奇偶性。


#include <bits/stdc++.h>using namespace std;int main() {    int t;    scanf("%d", &t);    int kase = 1;    while(t--) {        printf("Case #%d: ", kase++);        int n, a, b;        scanf("%d %d %d", &n, &a, &b);        int gcd = __gcd(a, b);        int num = n / gcd - 2;        if(num % 2) puts("Yuwgna");        else puts("Iaka");    }    return 0;}


0 0