題目描述:
常言道“小賭怡情”。這是一個很簡單的小遊戲:首先由計算機給出第一個整數;然後玩家下注賭第二個整數将會比第一個數大還是小;玩家下注 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.
import java.util.Scanner;
/**
* @author snowflake
* @create-date 2019-07-17 17:23
*/
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int money = cin.nextInt();
int maxRound = cin.nextInt();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < maxRound; i++) {
int n1 = cin.nextInt();
int b = cin.nextInt();
int t = cin.nextInt();
int n2 = cin.nextInt();
// 如果玩家下注量大于自己有的前
if (t > money) {
sb.append("Not enough tokens. Total = " + money + ".");
} else {
// 如果玩家預測正确
// b == 0 && n2 < n1 或者 b == 1 && n2 > n1
// 本來想到還有一種可能 玩家猜測 相等
// 但是題目保證了 n1 != n2,是以過濾掉這種情況,直接使用 else 即可,不使用 else if
boolean status = b == 0 && n2 < n1 || b == 1 && n2 > n1;
if (status) {
money += t;
sb.append("Win " + t + "! Total = " + money + ".");
} else {
money -= t;
sb.append("Lose " + t + ". Total = " + money + ".");
}
}
// 每次的換行符
sb.append("\n");
// 最後判斷玩家金錢
if (money <= 0) {
// 為了保證結果輸出的一緻性,在 Game Over 後 添加 換行符("\n")
sb.append("Game Over.");
sb.append("\n");
break;
}
}
System.out.println(sb.substring(0, sb.lastIndexOf("\n")));
}
}