从1开始,每次可以乘以2-9,看谁先得到n
找规律,找到先手的必胜态和必败态。
/*==========================================================*\
| 1-9 (A必胜)
| 10-18 (B必胜)
| 19-162 (A必胜)
| 163-324 (B必胜)
| 规律:N循环除以18,余数是[1,9]A必胜,[10,18]B必胜
\*==========================================================*/
int main()
{
ll n;
while (cin>>n) {
ll l = 1, r = 9;
int times = 0;
while (1) {
if (n >= l && n <= r) break;
l = r + 1;
if (times % 2 == 0) {
r = r * 2;
} else {
r = r * 9;
}
++times;
}
printf("%s\n", times % 2 == 0 ? "Stan wins." : "Ollie wins.");
}
return 0;
}
&spm=1001.2101.3001.5002&articleId=7346974&d=1&t=3&u=52728d9d092a41399699bf9e9468c88c)
203

被折叠的 条评论
为什么被折叠?



