UVA288 Arithmetic Operations With Large Integers 题解
0x00AC3375 · · 题解
大致题意
计算一个算术表达式,其中符号 +,-,*,** 四种符号分别表示加、减、乘和乘幂。
分析
根据题意,直接使用 Python 中内置的 eval 函数计算即可。判断输入结束,需要使用 try-except 语句捕获 EOFError 来实现。
只有 64B 的超级短代码:
while(1):
try:print(eval(input()))
except EOFError:break
接下来介绍一些“表达式计算”类问题的常见用法以及使用 Python 的 eval 所需要进行的“计算前预处理”。笔者目前尚没有想出计算“将感叹号用作阶乘符号”的表达式的办法,感兴趣的读者可以尝试思考。
| 编程用途 | 数学含义 | 处理方式 | |
|---|---|---|---|
| | | 按位或 | 绝对值 | 按照类似于“括号匹配”的方法找到成对的竖线,左边的竖线用 replace 替换成 abs(,右边的竖线替换成 “)”。 |
| ^ | 按位异或 | 幂次 | 用 replace 直接替换为两个星号即可 |
| % | 求余运算符 | 百分率 | 用 replace 替换为“/100” |
| [,],{,} | 表示列表/集合/结构体/函数/复合语句等 | 普通中括号/大括号 | 全部替换为小括号 |
| / | 普通除法 | 分数 | 调用 Fraction 模块进行计算 |
| ! | 逻辑非 | 阶乘 | - |