【GESP】C++一级真题练习(202309)luogu-B3863,买文具
GESP一级真题练习。为2023年9月一级认证真题。属于数值计算+条件判断的问题。
luogu-B3863
题目要求
描述
开学了,小明来到文具店选购文具。签字笔 2 元一支,他需要 X 支;记事本 5 元一本,他需要 Y 本;直尺 3 元一把,他需要 Z 把。小明手里有 Q 元钱。请你通过编程帮小明算算,他手里的钱是否够买他需要的文具。
输入
第一行包含一个正整数,是小明购买签字笔的数量。约定 1≤X≤10。
第二行包含一个正整数,是小明购买记事本的数量。约定 1≤Y≤10。
第三行包含一个正整数,是小明购买直尺的数量。约定 1≤Z≤10。
第四行包含一个正整数 Q,是小明手里的钱数(单位:元)。
输出
输出 2 行。如果小明手里的钱够买他需要的文具,则第一行输出 Yes,第二行输出小明会剩下的钱数(单位:元);否则,第一行输出 No,第二行输出小明缺少的钱数(单位:元)。
输入样例-1
1
1
1
20
输出样例-1
Yes
10
输入样例-2
1
1
1
5
输出样例-2
No
5
题目分析
这道题目主要考察简单的数学计算。需要注意以下几点:
- 需要计算总花费:
- 签字笔单价2元,需要X支,花费2X元
- 记事本单价5元,需要Y本,花费5Y元
- 直尺单价3元,需要Z把,花费3Z元
- 总花费 = 2X + 5Y + 3Z
- 判断逻辑:
- 如果总花费小于等于Q元,则钱够用
- 输出Yes
- 输出剩余金额 = Q - 总花费
- 如果总花费大于Q元,则钱不够
- 输出No
- 输出缺少金额 = 总花费 - Q
- 如果总花费小于等于Q元,则钱够用
- 输入输出格式:
- 输入4个整数X、Y、Z、Q,每个数占一行
- 输出2行,第一行Yes/No,第二行剩余/缺少金额
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
int first, second, third, money;
cin >> first >> second >> third >> money;
int total_cost = first * 2 + second * 5 + third * 3;
if (money >= total_cost) {
cout << "Yes" << endl;
cout << money - total_cost;
} else {
cout << "No" << endl;
cout << total_cost - money;
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
本文由作者按照 CC BY 4.0 进行授权