题目
已知火星人使用的运算符为#、$,与地球人等价公式如下:
x#y = 4x + 3y + 2
x$y = 2*x + y +3
- x、y为无符号整数;
- 地球人公式按C语言规则计算;
- 火星人公式中,#的优先级高于$,相同的运算符从左到右的顺序计算;
- 现在有一段火星人的字符串,请翻译并计算结果。
输入描述:
火星人的字符串表达式,仅由无符号整数、#、$组成;每个符合两边必须是整数;
输出描述:
输出计算结果(结尾不带回车换行符)
示例:
输入:
7#6$5#12$5
输出:
322
解题代码
from functools import reducedef calc_first(a, b=None):if b is None:return int(a)a = int(a)b = int(b)return 4*a + 3*b + 2def calc_second(a, b=None):if b is None:return int(a)a = int(a)b = int(b)return 2*a + b +3s = input().strip().split("$")
temp = []
for item in s:if "#" in item:item_e = item.split("#")r = reduce(calc_first, item_e)temp.append(r)else:temp.append(item)result = reduce(calc_second, temp)
print(result)