D-- 语言枚举结构判断与计算 - C++ 代码实现
{"title":"# 枚举结构\n\n## 题目描述\n\nD-- 是 2077 年的一种新兴语言。在 D-- 语言中,引入了一种「枚举结构」。具体的,这一种结构可以使用以下表达式表示:\n\nplaintext\nX Y Z W\n\n\n其中,$X, Z$ 为单个小写字母,代表变量名;$Y, W$ 为整数,代表枚举的起始值和终止值。其代表,将变量 $X$ 从 $Y$ 枚举到 $W$。\n\n由于 D-- 追求极致的安全性,因此为了进行确认,如果想要成功对 $X$ 变量进行枚举,那么 $Z$ 必须与 $X$ 相同。 \n\n例如,一个合法的枚举结构表达式如下:\n\nplaintext\ni 1 i 100\n\n\n其代表,将 $i$ 变量从 $1$ 枚举到 $100$。\n\n---\n\n现在你收到了一个 D-- 枚举结构表达式 X Y Z W,请你判断和计算以下内容:\n\n1. 表达式的合法性 \n\t一个枚举结构表达式,只有满足以下全部条件,方可算作合法: \n \n - $X$ 与 $Z$ 均为小写字母。\n - $X$ 与 $Z$ 相同。\n - $Y$ 与 $W$ 均为整数。在给定的表达式中,我们保证这一条总是成立。\n \n2. 如果合法,表达式将枚举的次数 \n\t对于一个合法的枚举表达式,如果 $Y \le W$,其将会枚举 $W - Y + 1$ 次;否则,其将会枚举 $Y - W + 1$ 次。\n\n## 输入格式\n\n输入共一行一个表达式 X Y Z W,其中 $X,Z$ 为单个大小写字母或一位数字,$Y, W$ 为整数。\n\n## 输出格式\n\n输出共两行。\n\n第一行为一个字符串。如果给定的表达式合法,输出 valid;否则输出 Invalid。 \n第二行为一个整数,如果给定的表达式不合法,输出 $-1$;否则输出表达式的枚举次数。\n\n## 样例 #1\n\n### 样例输入 #1\n\n\ni 1 i 100\n\n\n### 样例输出 #1\n\n\nvalid\n100\n\n\n## 样例 #2\n\n### 样例输入 #2\n\n\nI 1 j 100\n\n\n### 样例输出 #2\n\n\nInvalid\n-1\n\n\n## 提示\n\n### 数据规模与约定\n\n对于一个表达式 X Y Z W,对于 $100%$ 的数据,$-2 \times 10 ^ 9 \leq Y, W \leq 2 \times 10 ^ 9$,$X, Z$ 均为单个小写字母或单个大写字母或一位数字。cpp code内容:cpp\n#include <iostream>\n#include <string>\nusing namespace std;\n\nboolean isValidExpression(string X, int Y, string Z, int W) {\n if (X.size() != 1 || Z.size() != 1) {\n return false;\n }\n if (X[0] != Z[0]) {\n return false;\n }\n return true;\n}\n\nint calculateEnumeration(string X, int Y, string Z, int W) {\n if (!isValidExpression(X, Y, Z, W)) {\n return -1;\n }\n if (Y <= W) {\n return W - Y + 1;\n } else {\n return Y - W + 1;\n }\n}\n\nint main() {\n string X, Z;\n int Y, W;\n cin >> X >> Y >> Z >> W;\n\n if (isValidExpression(X, Y, Z, W)) {\n cout << "valid" << endl;\n cout << calculateEnumeration(X, Y, Z, W) << endl;\n } else {\n cout << "Invalid" << endl;\n cout << -1 << endl;\n }\n\n return 0;\n}\n
原文地址: https://www.cveoy.top/t/topic/pNiY 著作权归作者所有。请勿转载和采集!