第一题:PALINDROME GAME
标签:思维、博弈
题意:给定一堆石子,有SSS个(1≤S≤1010151≤S≤10^{10^{15}}1≤S≤101015),BessieBessieBessie和ElsieElsieElsie轮流拿回文正整数个石子,BessieBessieBessie先手,当轮到一个人的时候 石子堆空了,该人输。两个人都执行最优策略,求谁会赢?
题解:SSS数据很大,显然不能直接暴力模拟。我们可以找几个数据,推一推。
一位数的情况,BessieBessieBessie直接拿走获胜。
两位数的情况,比如101010,BessieBessieBessie至少得拿一个,不管拿多少个,剩下来都是一位数,ElsieElsieElsie赢。11、12、13...1911、12、13...1911、12、13...19的情况,BessieBessieBessie可以把个位直接拿走,留101010给ElsieElsieElsie,BessieBessieBessie赢。
具体再看看S=119S=119S=119之类的,发现只要BessieBessieBessie把个位拿走,留110110110给ElsieElsieElsie,也是必胜的,只要ElsieElsieElsie更改,BessieBessieBessie把个位多余的拿走,最后就能留101010给ElsieElsieElsie。
推了下,我们发现个位为000的为必败态,所以最终只要判SSS个位是否为000,就能知道是谁赢了。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
string s;
cin >> s;
int n = s.size();
if (s[n - 1] != '0') cout << "B" << endl;
else cout << "E" << endl;
}
return 0;
}
文章讲述了Bessie和Elsie在拿回文正整数石子的游戏中,如何通过观察个位数来确定胜利者。个位为0的石子堆会导致Bessie失败,而其他情况下Bessie有必胜策略。
1047

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



