万卷网 > 题目详情
题型:编程题

硬币游戏

题目描述:

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
更新时间:2026-02-26 17:30:54 |
【知识点】 蓝桥杯C++初/中级

相似题推荐

编程题

茶具套装

题目描述:

佳佳在一家茶具商店工作,有客户要订购一些茶具套装,一套完整的茶具套装包含1个茶壶、1个盖碗、1个茶漏以及4个茶杯。

现在已知茶壶、盖碗、茶漏和茶杯各自的数量,需要编写一个程序来计算最多能够组成多少套完整的茶具套装。

例如:茶壶、盖碗、茶漏和茶杯各自的数量分别是3,4,2,13。根据这些茶具的数量,佳佳最多能组成 2 套完整的茶具套装。

输入描述:

输入4个整数(0≤整数≤100),分别表示茶壶、盖碗、茶漏和茶杯各自的数量,整数之间以一个空格隔开。

输出描述:

输出一个整数,表示最多能组成完整的茶具套装数量。

样例输入:

3 4 2 13

样例输出:

2
2026-02-27
编程题

交换字符

题目描述:

给定一个字符串S,其中仅包含字符 "A" 和字符 "B"。你每次可以选择交换两个位置相邻的字符。

请计算如果要使奇数位置上(位置从1开始)字符 "A" 的数量等于偶数位置上字符 "A" 的数量,最少需要进行多少次交换操作。

例如:S = "AABABA",从左往右数,奇数位置上字符 "A" 的数量为1(位置1),偶数位置上 "A" 的数量为3(位置2、4、6);

可将位置 2 的字符 "A" 和位置 3 的字符 "B" 交换,交换后,奇数位置上字符 "A" 的数量和偶数位置上字符 "A" 的数量都为 2,满足题目要求,故最少需要交换一次。

输入描述:

输入一个字符串S(2≤S的长度≤10^5),其中仅包含字符 "A" 和字符 "B"。

输出描述:

输出一个整数,表示满足题目要求的最少交换次数,如果无论怎么交换都无法满足题目要求,则输出 -1。

样例输入:

AABABA

样例输出:

1
2026-02-27
单选题

运行c++语句 cout << (char)('F'+4);的结果是?( )

A.

I

B.

J

C.

k

D.

j

2026-02-27
单选题

运行以下c++程序,输出的结果是?( )

int func(int y){
    y -=5;
    cout << "X";
    return 0;
}
int main(){
    int x = 10, y = 5;
    if(x > y || func(y))
        cout << y;
    return0;
}
A.

X0

B.

X5

C.

5

D.

0

2026-02-27
单选题

运行以下c++程序,输出的结果是?( )

int i = 1, t = 0;
while(i * i < 30){
    t +=1;
    i +=2;
}
cout << t;
A.

3

B.

4

C.

9

D.

16

2026-02-27
公众号
客服 反馈
顶部