UVA465 Overflow 题解
作为 Python 党,一看到要判断大于 int 范围且不知道是不是小于 unsigned long long 的数就想着用 Python
偷懒大法——Python
废话不多说,开始解题:
题目大意
给定两个正整数和两数之间的符号,为
判断这两个数中的一个数或者运算结果是否大于 int 范围。
解题思路
众所周知,int 的范围是
这样一来就好办了,可以一直输入直到 End Of File,并判断,写一个 while True 就解决了。
本题使用 Python 解题的难点是如何判断 EOF?
众所周知,Python 有着一堆 Error 类,一不小心就会引发并终止程序,在 OJ 上显示为 RE,所以很难判断具体为哪个错误类。
Python 不像 C++ 一样可以直接用 != EOF 判断输入是否为 EOF,需要用 try except 语句实现。
本题坑点(英语好的人自动跳过):
一个输入可以输出
代码
献上简洁的 Python 代码:
import sys#可把 break 换成 sys.exit()
MAX = 2147483647#2^31-1
while True:#无限循环直到 EOFError
try:#try ... except ...
s = input()#尝试输入
except EOFError:#如果引发错误
break#结束程序,也可使用 sys.exit()
print(s)
l = list(s.split())#列表存储
if int(l[0]) > MAX:#注意转换类型
print("first number too big")
if int(l[2]) > MAX:#可以两个数都超 int,用 if
print("second number too big")
if l[1] == "+" and int(l[0]) + int(l[2]) > MAX:#注意有两个条件
print("result too big")
elif l[1] == "*" and int(l[0]) * int(l[2]) > MAX:#if 也可以
print("result too big")