最后的约定
时间限制:1000 ms | 内存限制:65535 KB
难度:1
-
描述
-
goshawk和女朋友girl谈恋爱之前就约定过,如果有一天要分手,就把送彼此的礼物进行下面的操作。
将所有的礼物放到两个箱子里个数分别为n,m>0。两个人轮流进行如下操作:将一个箱子中的礼物清空,然后将另一个箱子中的礼物分到该箱子中,保证两个箱子中都有礼物,最后一个人实现让两个箱子中都只有一个礼物的能将所有的礼物带走,以做纪念。
问如果goshawk先进行操作,谁能保存这些礼物?
-
-
输入
-
输入两个正整数n,m表示两个箱子中的礼物数量。输入包含多组测试数据,以EOF为文件结束。
输出
-
如果goshawk能珍存这些礼物,那么输出
"goshawk will treasure these gifts"。
否则输出
"girl will treasure these gifts"。
样例输入
-
1 1 2 1
样例输出
-
girl will treasure these gifts goshawk will treasure these gifts
-
先打表找规律即可
-
#include <cstdio> #include <cstring> #include <iostream> using namespace std; /*int win[110][110]; void lookup(){ win[1][1] = 0; int i, j, k, m, n; for (k = 3; k < 20; ++k) { for (n = 1; n < k; ++n) { m = k - n; win[n][m] = 0; for (i = 1; i < n; ++i) { if(!win[i][n - i]) win[n][m] = 1; } for (i = 1; i < m; ++i) { if(!win[i][m - i]) win[n][m] = 1; } if(n <= m && !win[n][m]) printf("%d %d\n", n, m); } } } */ int main(void){ int n, m; while(scanf("%d%d", &n, &m) == 2) { if((n & 1) && (m & 1)) { printf("girl will treasure these gifts\n"); } else printf("goshawk will treasure these gifts\n"); } return 0; }
-
输入两个正整数n,m表示两个箱子中的礼物数量。输入包含多组测试数据,以EOF为文件结束。