数学趣题——常胜将军
2010-05-26 08:57
225 查看
一、题目
21根火柴,A和B每人每次可以取走1——4根,不可多取,也不可不取,取最后一根火柴者输,要求A先取,B后取。如何保证B永远是胜利者。
二、分析
即必须是B最后只留给A 1根火柴。也就是除了最后第21根火柴,之前的每一轮都必须保证A和B取到的火车数之和为5。三、源码
#include <stdio.h>
int main()
{
int A, B, nSpare = 21;
while (1)
{
printf("当前还有%d根火柴\n", nSpare);
printf("A:");
scanf("%d", &A);
if (A < 1 || A > 4 || A > nSpare)
{
printf("A wrong\n");
continue;
}
nSpare -= A;
if (nSpare == 0)
{
printf("\n B win! Game over!\n");
break;
}
B = 5 - A;
nSpare -= B;
printf("B:%d \n", B);
if (nSpare == 0)
{
printf("\n A win! Game over!\n");
break;
}
}
return 0;
}