PAT 乙级 1071.小赌怡情 C++/JAVA

题目来源

常言道“小赌怡情”。这是一个很简单的小游戏:首先由计算机给出第一个整数;然后玩家下注赌第二个整数将会比第一个数大还是小;玩家下注 t 个筹码后,计算机给出第二个数。若玩家猜对了,则系统奖励玩家 t 个筹码;否则扣除玩家 t 个筹码。

注意:玩家下注的筹码数不能超过自己帐户上拥有的筹码数。当玩家输光了全部筹码后,游戏就结束。

输入格式:

输入在第一行给出 2 个正整数 T 和 K(≤ 100),分别是系统在初始状态下赠送给玩家的筹码数、以及需要处理的游戏次数。随后 K 行,每行对应一次游戏,顺序给出 4 个数字:

n1 b t n2

其中 n1 和 n2 是计算机先后给出的两个[0, 9]内的整数,保证两个数字不相等。b 为 0 表示玩家赌,为 1 表示玩家赌t 表示玩家下注的筹码数,保证在整型范围内。

输出格式:

对每一次游戏,根据下列情况对应输出(其中 t 是玩家下注量,x 是玩家当前持有的筹码量):

  • 玩家赢,输出 Win t! Total = x.
  • 玩家输,输出 Lose t. Total = x.
  • 玩家下注超过持有的筹码量,输出 Not enough tokens. Total = x.
  • 玩家输光后,输出 Game Over. 并结束程序。

输入样例 1:

100 4
8 0 100 2
3 1 50 1
5 1 200 6
7 0 200 8

输出样例 1:

Win 100!  Total = 200.
Lose 50.  Total = 150.
Not enough tokens.  Total = 150.
Not enough tokens.  Total = 150.

输入样例 2:

100 4
8 0 100 2
3 1 200 1
5 1 200 6
7 0 200 8

输出样例 2:

Win 100!  Total = 200.
Lose 200.  Total = 0.
Game Over.

分析:

循环K次,每次先对剩余筹码进行判断,再判断玩家的输赢,如果玩家输了,扣除筹码之后还要判断是否等于0,筹码为0就GameOver

C++实现:

 1 #include <iostream>
 2 using namespace std;
 3
 4 int main()
 5 {
 6     int totalMoney = 0;    //总筹码
 7     int gameRound = 0;        //需要处理的游戏次数
 8     int n1;    //计算机给出的0-9的数
 9     int b;    //b=0:赌小    b=1:赌大
10     int n2;    //计算机给出的0-9的数 n1!=n2
11     int t;    //玩家下注量
12
13     cin >> totalMoney >> gameRound;
14
15     for (int i = 0; i < gameRound; ++i)
16     {
17         cin >> n1 >> b >> t >> n2;
18
19         if (t > totalMoney)
20         {
21             printf("Not enough tokens.  Total = %d.\n", totalMoney);
22             continue;
23         }
24
25         if ((b == 0 && n1 > n2) || (b == 1 && n2 > n1))
26         {
27             //赢了
28             totalMoney += t;
29             printf("Win %d!  Total = %d.\n", t, totalMoney);
30             continue;
31         }
32         if ((b == 0 && n1 < n2) || (b == 1 && n2 < n1))
33         {
34             //输了
35             totalMoney -= t;
36             printf("Lose %d.  Total = %d.\n", t, totalMoney);
37         }
38
39         if (totalMoney <= 0)
40         {
41             printf("Game Over.\n");
42             i = gameRound + 1;  //退出循环
43         }
44     }
45     return 0;
46 }

Java实现:



原文地址:https://www.cnblogs.com/47Pineapple/p/11674733.html

时间: 2024-10-17 20:47:24

PAT 乙级 1071.小赌怡情 C++/JAVA的相关文章

PAT 1071. 小赌怡情

PAT 1071. 小赌怡情 常言道"小赌怡情".这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注t个筹码后,计算机给出第二个数.若玩家猜对了,则系统奖励玩家t个筹码:否则扣除玩家t个筹码. 注意:玩家下注的筹码数不能超过自己帐户上拥有的筹码数.当玩家输光了全部筹码后,游戏就结束. 输入格式: 输入在第一行给出2个正整数T和K(<=100),分别是系统在初始状态下赠送给玩家的筹码数.以及需要处理的游戏次数.随后K行,每行

1054. 求平均值 (20)-PAT乙级真题

今天刚刚到学校,2017年学习正式开始了,今天看到了浙大的<数据结构>这学期又要开课了,决定一定要跟着学习一遍:在大学生mooc网上学习:http://www.icourse163.org/course/zju-93001#/info :然后就是跟着<算法之美>也要同步看完. 然后就在PAT上随便做一道题,这是第一次通过AC,发现了两个比较好的博客主页:http://www.liuchuo.net/  和  https://www.joyhwong.com/   都总结了刷题的过程

PAT乙级1034. 有理数四则运算(20)

本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分:若为负数,则须加括号:若除法分母为0,则输出“Inf”.题目保证正确的输出中没

PAT乙级1006题python3代码

PAT乙级1006题python3代码 目录 PAT乙级1006题python3代码 目录 代码 题目: 让我们用字母B来表示"百".字母S表示"十",用"12-n"来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个"百".3个"十".以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出

PAT 乙级 1045

题目 题目地址:PAT 乙级 1045 题解 本题的解法比较巧妙,刚开始的试着用暴力求解,果不其然时间超限-- 变换思路,既然对于每个元素来说满足的条件是前小后大,那么对数组排序,对应的位置相等的即为题设要求的"可能主元",但是还有一个条件要保证当前是从左向右遍历的最大值:总结一下两个条件:1. 排序后对应位置数字相等:2. 当前操作元素是从左向右遍历中的最大值 同时还要注意,当输入n值为0时,除了需要输出"可能主元"的个数之外,还需要保留换行符'\n' 代码 1

PAT 乙级 1003

题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:"如果 aPbTc 是正确的,那么 aPbATca 也是正确的",这是理解本题的关键信息,观察之后会发现,当b的字符串里再增加一个A,那么T之后的字符串就会多出a个A(特别注意,这里的 'ca' 实际上是 c + a 个A字符的关系),那么这个关系也就显而易见了,只有在 a * b = c 的条件下,才会有这样

PAT 乙级 1017

题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化了整个运算过程:在整个运算中最为重要的就是中间变量(sum),判断中间变量sum是否足够大能被除数n整除,这也是本题的关键所在: 通过是否判断sum是否能被整除,可以分为以下两种情况: 1. sum == 0 && num[i] < n (当前运算位num[i]小于除数) 2. 其余情况

PAT乙级1031

题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392 题解 emmm.对于每个身份证号,判断前17位是否合法,并计算其与对应权重积之和,最后判断校验位是否合法. // PAT BasicLevel 1031 // https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392 #include

PAT乙级1032

题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805289432236032 题解 用数组的下标表示学校,数组元素表示分数.统计各校分数后,遍历求最大就好了. 做这道题遇到一个memset初始化数组元素的问题,具体见https://www.cnblogs.com/chouxianyu/p/11322984.html // PAT BasicLevel 1032 // https://pintia.cn/pro