硬币游戏 题目描述: Jerry 和 Tom 正在进行一局游戏。他们准备了n个盒子,编号为 1 到 n,其中 i 号盒子装有ai枚硬币。他们将这 n 个盒子围成一圈。游戏规则如下: (1)Jerry 和 Tom 轮流从某一个盒子中取走至少一枚硬币,Jerry先手从 1 号盒子开始取; (2)如果前一个玩家取的是 i 号盒子中的硬币,那么当前玩家必须从 i+1 号盒子中取硬币。特别地,如果前一个玩家取的是 n 号盒子中的硬币,那么当前玩家必须从 1 号盒子中取硬币。 (3)如果轮到某位玩家时对应盒子中没有硬币,则该玩家失败。 假设 Jerry 和 Tom 都采取最优策略,请问谁会赢? 输入描述: 本题每个测试点包含多组测试数据,格式如下: 第一行输入一个整数T(1≤T≤100),表示数据组数; 对于每组测试数据,第一行输入一个整数n(1≤n≤1000),表示盒子的数量; 第二行输入n个整数ai(1≤ai≤10^9),分别表示 1 号到 n 号盒子中的硬币数量,整数之间以一个空格隔开。 输出描述: 输出 T 行,每行输出一个字符串,对于第 i 组测试数据,如果 Jerry 能赢,则输出 "Jerry",否则输出 "Tom"。 样例输入: 2 1 10 2 30 50 样例输出: Jerry Tom
正确答案:参考程序(Python):T=int(input());for _ in range(T):n=int(input());a=list(map(int,input().split()));k=0;while k<n and a[k]>0:k+=1;if k==n:print('Jerry' if n%2==1 else 'Tom') else:print('Tom' if k%2==0 else 'Jerry')。样例1 n1全非空n奇→Jerry;样例2 n2全非空n偶→Tom。核心:硬币游戏先空判定。
试卷来源:202508(第16届)蓝桥杯C++编程青少组(省赛_初/中级)真题