题目
思路
找规律。看下表。
首先如果开始数量为 一定是牛牛输,如果数量为 或 都是牛牛赢。
考虑数量为 牛牛只能可以取 或者 转移到牛妹必赢的状态。
和 可以转移到 , 可以转移到 、、。继续往下推可以发现只有 的倍数只能转移到一种必胜状态,因此如果数量是 的倍数就是牛妹必胜,否则牛牛必胜。
图片来自上海交通大学方泓杰前辈的课件。
Code
#include <cstdio> #include <cstring> #include <string> #include <iostream> #include <algorithm> int t, n; int main() { scanf("%d", &t); while(t--) { scanf("%d", &n); if (n % 3 == 0) puts("Frame"); else puts("Alan"); } return 0; }