牛客第五场
------------恢复内容开始------------
E
博弈:
n=1:胜
n=2:败n=2:败n=2:败,只能是自己拿一个,对方拿一个,然后GG
n=3:胜n=3:胜n=3:胜,自己拿一个,令对方到达n=2n=2n=2的必败点
n=4:败n=4:败n=4:败,如图红色箭头所指两种情况,都是必败状态
n=5:胜n=5:胜n=5:胜,拿 111 个,令对方到达n=4n=4n=4的必败点
n=6:胜n=6:胜n=6:胜,拿 222 个,令对方到达n=4n=4n=4的必败点
n=7:胜n=7:胜n=7:胜,拿 333 个,令对方到达n=4n=4n=4的必败点
n=8:败n=8:败n=8:败,无论怎么拿,都会达到对方的必胜点。
由此我们可以发现,若当前必败点为 xxx,距离下一个必败点的距离,就是 2x2x2x 位置
也就是必败点为:2,4,8,16,32,...,2n2,4,8,16,32,...,2^n2,4,8,16,32,...,2
正解:但凡是 2^n
都是后手赢
#include <bits/stdc++.h> using namespace std; int main() { long long n; scanf("%lld", &n); long long tmp = 2; for (int i = 1; i <= 60; i++) { if (tmp == n) { printf("Alice\n"); return 0; } tmp = tmp * 2; } printf("Bob\n"); return 0; }
三分查找,简单题;
附上之前学习的,顺便贴到之前学习的链接:https://www.cnblogs.com/hgangang/p/11787734.html
------------恢复内容结束------------