数学趣题——常胜将军
一、题目
21根火柴,A和B每人每次可以取走1——4根,不可多取,也不可不取,取最后一根火柴者输,要求A先取,B后取。如何保证B永远是胜利者。
二、分析
即必须是B最后只留给A 1根火柴。也就是除了最后第21根火柴,之前的每一轮都必须保证A和B取到的火车数之和为5。
三、源码
1: #include <stdio.h>
2: 3: int main()
4: {5: int A, B, nSpare = 21;
6: while (1)
7: {8: printf("当前还有%d根火柴\n", nSpare);
9: printf("A:");
10: scanf("%d", &A);
11: if (A < 1 || A > 4 || A > nSpare)
12: {13: printf("A wrong\n");
14: continue;
15: } 16: 17: nSpare -= A;18: if (nSpare == 0)
19: {20: printf("\n B win! Game over!\n");
21: break;
22: } 23: 24: B = 5 - A; 25: nSpare -= B;26: printf("B:%d \n", B);
27: if (nSpare == 0)
28: {29: printf("\n A win! Game over!\n");
30: break;
31: } 32: } 33: 34: 35: return 0;
36: }

浙公网安备 33010602011771号