[语言月赛202303] Factorial B 题解

· · 题解

[语言月赛202303] Out for dinner 题解

Source & Knowledge

2023 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。

本题考察分支结构。

文字题解

题目大意

给出一个长度为 2 的点菜单,总共可能点三种菜:ABC

给出打折前的菜品总额,求折扣后要付多少钱。

解析

可以用一个 long long 存储菜品金额,两个 char 变量存储点的两道菜。

long long x;
char a, b;
cin >> x >> a >> b;

然后分别讨论 abBC 的情况即可。一个小技巧是,不妨假设 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;

视频题解

完整代码请在视频中观看