欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!
专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。
适合人群:
- 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
- 希望系统学习C++/Python编程的初学者
- 想要提升算法与编程能力的编程爱好者
附上汇总贴:USACO历年青铜组真题解析 | 汇总-CSDN博客
【题目来源】
洛谷:[P10187 USACO24FEB] Palindrome Game B - 洛谷
【题目描述】
贝西和埃尔西正在用一堆最初包含 S S S 个石头的石头玩游戏** ( 1 ≤ S ≤ 1 0 1 0 5 ) (1\le S\le 10^{10^5}) (1≤S≤10105)**。他们俩只奶牛轮流进行游戏,贝西先开始。当轮到一头奶牛的时候,她必须从堆中移走 x x x 个石头,其中 x x x是她选择的任何正回文整数。如果一头奶牛开始拿石头时堆为空,那么这头奶牛就输了。
定义:一个正整数是回文数,如果它正着读和倒着读都是一样的;回文数的例子包括 11 11 11、 121 121 121 和 9009 9009 9009。不允许前导零;例如, 990 990 990不是回文数。
有** ( 1 ≤ T ≤ 10 ) (1\le T\le 10) (1≤T≤10)**个独立的测试用例。对于每个测试用例,如果两头奶牛都以最优策略玩游戏,输出谁赢了游戏。
【输入】
第一行包含T,即测试用例的数量。接下来的 T T T 行描述了测试用例,每个测试用例占一行。
每个测试用例由一个单独的整数 S S S指定。
【输出】
对于每个测试用例,如果贝西在最优策略下从大小为 S S S 的石头堆开始玩游戏并获胜,则输出 B B B;否则,输出 E E E。
【输入样例】
3
8
10
12
【输出样例】
B
E
B
【算法标签】
《洛谷 P10187 Palindrome Game》 #USACO# #O2优化# #2024#
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int t;
string s;
int main()
{
cin >> t; // t组数据
while (t--) {
cin >> s; // 以字符串形式输入
if (s[s.size()-1]=='0') cout << "E" << endl; // 如果最后一位为0,则埃尔西赢
else cout << "B" << endl; // 否则一定贝西赢
}
return 0;
}
【运行结果】
3
8
B
10
E
12
B
330

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



