TOJ3448: 小学生的作业

时间:2023-03-09 18:41:21
TOJ3448: 小学生的作业

Python字符串的插入操作

传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=3448

时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte

描述

给定用等号连接的两个整数,如“1234=127”。

问能否在左边的整数中间某个位置插入一个加号使得等号成立。比如:

123+4=127

请你编写一个程序实现。

输入

输入占一行,即用等号连接的两个整数

已知,等号两边的整数都不会超过2000000000。

输出

如果存在这样的方案,请输出那个正确的式子。不含任何空格字符。

否则输出:

Impossible!

数据保证最多只有一种方案。

样例输入

1234=127

样例输出

123+4=127

思路:这题如果用C写,循环遍历过去分割字符串,然后字符串转整数相加一下,遍历过去就行了。

然而,这题拿来是练习一下Python的插入字符串的操作的。因为Python中str没有insert函数,所以只能自己写啦

def insert(original, new, pos):
'''Inserts new inside original at pos.'''
return original[:pos] + new + original[pos:]

引自:http://twigstechtips.blogspot.com/2010/02/python-insert-string-into-another.html

大概就是上面这样!

然后再用eval函数把加上加号的字符串转成值判断一下就好了!最后注意如果遍历完了还没有,就得输出“Impossible!”

代码:

while True:
try:
n,m = input().split("=")
flag = 0
for i in range(1,len(n)):
k = n[:i] + '+' + n[i:]
if(int(eval(k)) == int(m)):
print("%s=%s"%(k,m))
flag = 1
if flag == 0:
print("Impossible!")
except EOFError:
break