1-2-K Game
题目链接:https://vjudge.net/contest/330119#problem/E
题目大意可以理解为:
1.给出n个物品以及k,Alice与Bob轮流拿1个,或2个,或k个物品,Alice先手, 谁最后拿完所有的物品 谁就赢。
题解思路:https://www.cnblogs.com/think-twice/p/11190574.html
#include<stdio.h> int n, k;//相当于有n个物品 每次拿 1 个,或者 2 个,或者 k 个 //Alice先手,谁先拿完谁就赢。 //Bob后手 int main() { int T; scanf("%d", &T); while(T --) { scanf("%d%d", &n, &k); if(k % 3) //若 k 不是 3 的倍数 { if(n % 3) //若 n 不是 3 的倍数,那么Alice先拿走 余数。则在之后 无论 Bob 拿1,2,或k。都可以将局面变成 3 的倍数,必赢。 printf("Alice\n"); else //若 n 是 3 的倍数,则无论Alice先手拿1,2,k。Bob都可以将局面变成 3 的倍数,Alice必输。 printf("Bob\n"); } else //若 k 是 3 的倍数,情况复杂,应从 k + 1 必输局面考虑 { n %= k + 1; if(n == k || n % 3) printf("Alice\n"); else printf("Bob\n"); } } return 0; }