1 条题解

  • 0
    @ 2025-8-24 21:14:38

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 一扶苏一
    休息结束。邮箱 yifusuyi@qq.com

    搬运于2025-08-24 21:14:37,当前版本为作者最后更新于2018-05-04 16:35:55,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


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

    Source & Knowledge

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

    本题考察分支结构。

    文字题解

    题目大意

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

    • 如果点了 B 菜而没点 C 菜,则打八折;
    • 如果点了 C 菜而没点 B 菜,则打七折;
    • 如果 BC 两个菜都点了,则打六折。

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

    解析

    可以用一个 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;
    

    视频题解

    完整代码请在视频中观看

    • 1

    信息

    ID
    8443
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者