题目:题目链接
Description
Dw放假回家和Daddy下象棋,突然想起有一种象棋游戏叫做象棋三五七,就是有三堆象棋,分别编号为1,2,3。第一堆有3个棋子,第二堆有5个棋子,第三堆有7个棋子,游戏规则如下:
(1)两人交替拿棋子,每次都是DW先拿。
(2)DW第一次只能在指定堆里拿指定数量的棋子。
(3)接下来每人每次能在任意堆里拿任意棋子。
(4)每人每次只能从一堆里拿棋子,不能跨堆拿棋子;
(5)谁拿到最后一个棋子谁就输。
假设Dw和Daddy两个人都很聪明,并且每次都是Dw先拿。Dw想能不能编个程序来计算谁赢呢?但是Dw是个很懒的人,那么现在就由你来替他编写程序吧!
(1)两人交替拿棋子,每次都是DW先拿。
(2)DW第一次只能在指定堆里拿指定数量的棋子。
(3)接下来每人每次能在任意堆里拿任意棋子。
(4)每人每次只能从一堆里拿棋子,不能跨堆拿棋子;
(5)谁拿到最后一个棋子谁就输。
假设Dw和Daddy两个人都很聪明,并且每次都是Dw先拿。Dw想能不能编个程序来计算谁赢呢?但是Dw是个很懒的人,那么现在就由你来替他编写程序吧!
Input
多组输入。
每组数据有一行,包含两个整数k,n(0 < k < 4,0 < n < 8),表示Dw第一次从堆编号为k中拿出n个棋子。
二者都为0时,程序结束。
每组数据有一行,包含两个整数k,n(0 < k < 4,0 < n < 8),表示Dw第一次从堆编号为k中拿出n个棋子。
二者都为0时,程序结束。
Output
若Dw赢,则输出“Dw is the winner!!!”,否则,输出“Daddy is the winner!!!”。
Sample Input
2 1
3 1
1 2
0 0
3 1
1 2
0 0
Sample Output
Dw is the winner!!!
Daddy is the winner!!!
Daddy is the winner!!!
Daddy is the winner!!!
Daddy is the winner!!!
这个题目的SG写的真纠结,怎么都不过,竟然这样过了...
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int m, n;
int a, b, c;
while(cin >> m >> n)
{
if(!m && !n)
break;
int sum = 0;
int a[3];
a[0] =3;
a[1] = 5;
a[2] = 7;
a[m] -= n;
for(int i = 0; i< 3; ++i)
sum ^= a[i];
if(sum != 0)
printf("Daddy is the winner!!!\n");
else
printf("Dw is the winner!!!\n");
}
return 0;
}
囧(/ □ \)...