[语言月赛202303] Factorial B 题解
[语言月赛202303] Out for dinner 题解
Source & Knowledge
2023 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。
本题考察分支结构。
文字题解
题目大意
给出一个长度为 A,B,C。
- 如果点了
B菜而没点C菜,则打八折; - 如果点了
C菜而没点B菜,则打七折; - 如果
B和C两个菜都点了,则打六折。
给出打折前的菜品总额,求折扣后要付多少钱。
解析
可以用一个 long long 存储菜品金额,两个 char 变量存储点的两道菜。
long long x;
char a, b;
cin >> x >> a >> b;
然后分别讨论 a 和 b 是 B 或 C 的情况即可。一个小技巧是,不妨假设 a 是两个菜品中编号较小的那个,可以通过交换两个数完成这个假设。然后可以减小一半的讨论情况。
用一个变量 y 记录折扣力度。
int y = 10;
if (a > b) swap(a, b); // 这句话保证了 a 是较小的。
if (a == 'B') {
if (b == 'C') {
y = 6;
} else {
y = 8;
}
} else if (b == 'C') {
y = 7;
}
cout << x / 10 * y << endl;
视频题解
完整代码请在视频中观看。