小石的签到题 题解
小石的签到题
https://ac.nowcoder.com/acm/contest/5505/D
小编的思路:
第一种:直接暴力枚举他们取石子的过程 惨遭超时
然后小编就开始想啊:他们取石子的赢得那方是不是有必胜策略呢?
于是我们就把取石子的过程输出来看:
偶对了,取石子的过程是这样的:

还自带水印的%%%
看到这里,想必大家一定明白了————————我们来写一个对拍
对拍的过程中,小编发现了:除了1,是小阳赢,其他的都是小石赢了 别问我怎么知道的
我们对拍的代码: dalao勿喷
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1000000005
bool flag[MAXN];
int main()
{
int n, dddddddd = 0;
cin >> n;
if(n == 1)
puts("Yang");
else if(n == 2)
puts("Shi");
else
{
int cnt = 0, ni = n - 1;
while(cnt <= n)
{
int tmp = ni;
while(!flag[tmp])
{
cout << tmp << " ";
flag[tmp] = true;
tmp /= 2;
cnt++;
}
puts("");
ni--;
dddddddd != dddddddd;
}
if(dddddddd)
puts("Shi");
else
puts("Yang");
}
return 0;
} 然后我们循环一遍,然后就会发现:答案清一色的是
Shi,于是我连蒙带猜,连滚带爬的写对了。
最后,
我要吸吸你们的欧气
吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸吸
事后注明:
本人第一次写博客, 不 喜 勿 喷
嘻嘻
