[语言月赛 202307] 枚举结构 题解

· · 题解

Source & Knowledge

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

题目大意

给定一个表达式 X Y Z W,其中 X,Z 为单个大小写字母或一位数字,Y, W 为整数。判断该表达式是否合法及计算循环次数。

题目分析

在读入表达式后,只需按照题目给定的条件运算即可。

char x, z;
long long y, w;
cin >> x >> y >> z >> w;
  1. 表达式的合法性

    故此处核心代码如下:

    if (x == z && (x >= 'a' && x <= 'z')) {
        cout << "valid" << endl;
        ...
    else {
        cout << "Invalid" << endl << -1 << endl;
    }
  2. 如果合法,表达式将枚举的次数

    对于一个合法的枚举表达式,如果 Y \le W,其将会枚举 W - Y + 1 次;否则,其将会枚举 Y - W + 1 次。

    只需要判断 YW 的大小关系,并输出对应变量即可。故此处核心代码如下:

    if (x == z && (x >= 'a' && x <= 'z')) {
        cout << "valid" << endl;
        if (y <= w) {
            cout << w - y + 1 << endl;
        } else {
            cout << y - w + 1 << endl;
        }
    ...

视频讲解