我在编码比赛中做一个谜题,我被困在一个问题上。基本上我不明白有人怎么能达到这个解决方案。谜题是
爱丽丝和鲍勃玩以下游戏。他们选择一个数字 N 来玩。规则如下:
- 鲍勃先上场,两名球员轮流上场。
- 轮到他/她,玩家可以从 N 中减去任何小于 N 的素数(包括 1)。这样得到的数字就是新的 N。
- 轮到他/她不能移动的人输掉比赛。
假设双方都发挥最佳,谁会赢得比赛?
给定的解决方案是
int main() {
long int T, N;
for(scanf("%ld", &T); T > 0; T--) {
scanf("%ld", &N);
if (N % 4 == 1) {
printf("ALICE wins\n");
} else {
printf("BOB wins\n");
}
}