Mô tả bài toán
Bài toán "Trò chơi vui vẻ với cược nhỏ" mô phỏng một trò chơi đơn giản:
Ban đầu, hệ thống cung cấp số nguyên đầu tiên; người chơi sau đó đặt cược rằng số thứ hai sẽ lớn hơn hay nhỏ hơn số đầu tiên; sau khi người chơi đặt cược t token, hệ thống sẽ đưa ra số thứ hai. Nếu người chơi đoán đúng, hệ thống thưởng cho người chơi t token; ngược lại, trừ t token khỏi tài khoản của người chơi. Lưu ý: số token cược không được vượt quá số token người chơi đang có. Khi người chơi mất hết token, trò chơi kết thúc.
Đầu vào
Đầu vào ở dòng đầu tiên cho 2 số nguyên dương T và K (≤ 100), lần lượt là số token hệ thống tặng ban đầu và số lần trò chơi cần xử lý.
K dòng tiếp theo, mỗi dòng tương ứng một lần trò chơi, lần lượt đưa ra 4 số: n1 b t n2, trong đó n1 và n2 là hai số nguyên từ 0 đến 9 do hệ thống đưa ra (đảm bảo hai số khác nhau). b là 0 nếu người chơi cược số nhỏ hơn, là 1 nếu người chơi cược số lớn hơn. t là số token người chơi đặt cược, đảm bảo trong phạm vi số nguyên.
Đầu ra
Với mỗi lần trò chơi, đầu ra tương ứng theo các trường hợp sau (trong đó t là số token cược, x là số token người chơi đang giữ):
Người chơi thắng, xuất "Win t! Total = x."; Người chơi thua, xuất "Lose t. Total = x."; Người chơi cược vượt quá số token đang có, xuất "Not enough tokens. Total = x."; Người chơi mất hết token, xuất "Game Over." và kết thúc chương trình.
Mẫu đầu vào
100 4
8 0 100 2
3 1 50 1
5 1 200 6
7 0 200 8
Mẫu đầu ra
Win 100! Total = 200.
Lose 50. Total = 150.
Not enough tokens. Total = 150.
Not enough tokens. Total = 150.
Giải pháp bằng C++
#include <iostream>
using namespace std;
int main() {
int initialTokens, gameCount;
int firstNum, betType, betAmount, secondNum;
// Đọc số token ban đầu và số lần trò chơi
cin >> initialTokens >> gameCount;
for (int round = 0; round < gameCount; round++) {
// Đọc dữ liệu cho mỗi vòng chơi
cin >> firstNum >> betType >> betAmount >> secondNum;
// Kiểm tra nếu người chơi đã hết token
if (initialTokens <= 0) {
cout << "Game Over." << endl;
return 0;
}
// Kiểm tra số token cược
if (betAmount <= initialTokens) {
// Xử lý trường hợp người chơi cược số lớn hơn
if (betType == 1) {
if (secondNum > firstNum) {
initialTokens += betAmount;
cout << "Win " << betAmount << "! Total = " << initialTokens << "." << endl;
} else {
initialTokens -= betAmount;
cout << "Lose " << betAmount << ". Total = " << initialTokens << "." << endl;
}
}
// Xử lý trường hợp người chơi cược số nhỏ hơn
else if (betType == 0) {
if (secondNum < firstNum) {
initialTokens += betAmount;
cout << "Win " << betAmount << "! Total = " << initialTokens << "." << endl;
} else {
initialTokens -= betAmount;
cout << "Lose " << betAmount << ". Total = " << initialTokens << "." << endl;
}
}
} else {
// Trường hợp không đủ token để cược
cout << "Not enough tokens. Total = " << initialTokens << "." << endl;
}
}
return 0;
}