#68. # 希蒙的csp之旅
# 希蒙的csp之旅
题目描述:
希蒙同学在2025年9月以优异的成绩通过了CSP-J初赛。10月参加复赛时,他发现第二题正是这道题。希望看到本题的同学们也能顺利通过初赛与复赛。
现给定一行由多个子串组成的字符串,每个子串中包含一种运算符,并使用这一运算符对子串内的数字从左至右依次进行计算。支持的运算符有 +、-、*、/,%(取模)、^(按位异或)、&(按位与)、|(按位或)、>>(右移位)、<<(左移位)等运算符。计算时不考虑运算符优先级,因为每个子串只包含一种运算符,均按子串中运算符出现的顺序从左至右依次进行操作。除法为整数除法,结果取整数部分。
- 每个子串仅包含一种运算符,且该运算符两侧为无前导零的非负整数。
- 子串之间用至少一个空格分隔,字符串总长度不超过10000,子串个数不超过300。
- 运算按照子串中运算符从左至右依次进行。
- 除法运算结果取整数部分。 计算每个子串的运算结果后,输出其中的最大值。
输入格式
一行字符串 S。字符串由若干子串组成,各子串之间用至少一个空格隔开。每个子串仅包含一种运算符,运算符两侧为无前导零的非负整数。字符串 S 的总长度不超过10000,子串个数不超过300。
输出格式
一个整数,表示所有子串计算结果中的最大值。
样例1
输入
1+2+3 10-2 2*3*4 20/3 7%5 8^3 10&6 9|1 16>>2 3<<4
输出
48
样例解释
我们依次计算每个子串的值,最终找到其中的最大值。
- 1+2+3
先计算
1 + 2 = 3
,再计算3 + 3 = 6
。 结果是:6
- 10-2
直接进行减法:
10 - 2 = 8
。 结果是:8
- 2*3*4
先计算
2 * 3 = 6
,再计算6 * 4 = 24
。 结果是:24
- 20/3
进行整数除法:
20 // 3 = 6
(去除小数部分,保留整数部分)。 结果是:6
- 7%5
计算
7 % 5
,即 7 除以 5 的余数:7 % 5 = 2
。 结果是:2
- 8^3
按位异或运算:
8 ^ 3 = 11
(二进制:1000 ^ 0011 = 1011
,即 11)。 结果是:11
- 10&6
按位与运算:
10 & 6 = 2
(二进制:1010 & 0110 = 0010
,即 2)。 结果是:2
- 9|1
按位或运算:
9 | 1 = 9
(二进制:1001 | 0001 = 1001
,即 9)。 结果是:9
- 16>>2
右移运算:
16 >> 2 = 4
(二进制:10000 >> 2 = 100
,即 4)。 结果是:4
- 3<<4
左移运算:
3 << 4 = 48
(二进制:0011 << 4 = 1100000
,即 48)。 结果是:48
所有子串的计算结果分别是:6, 8, 24, 6, 2, 11, 2, 9, 4, 48
。
其中的最大值是:48。
样例 2
输入
4+5 8-3 7*2 15/3 20%3 6^2 14&7 10|5 32>>3 5<<2
输出
20
数据说明
本题采用梯度化数据设计,具体如下:
-
-
-
-
-
除法 /、取模 %:右操作数 > 0
- 30% 的数据:子串仅包含
+
(加法)、-
(减法)两种运算符,仅需处理基础的加减顺序运算,无需考虑复杂运算逻辑。 - 50% 的数据:子串包含
+
、-
、*
(乘法)、/
(除法)、%
(取模)五种运算符。 - 80% 的数据:子串包含
+
、-
、*
、/
、%
、^
(按位异或)、&
(按位与)、|
(按位或)八种运算符。 - 100% 的数据:子串包含全部十种运算符(
+
、-
、*
、/
、%
、^
、&
、|
、>>
(右移位)、<<
(左移位))。
相关
在下列比赛中: