027-数字反转
总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入
输入共 1 行,一个整数N。
-1,000,000,000 ≤ N≤ 1,000,000,000。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1:
123
样例 #2:
-380
样例输出
样例 #1:
321
样例 #2:
-83
来源
NOIP2011复赛 普及组 第一题
示例代码
n = input()
list = []
if (int(n) == 0):#分三种情况, n = 0单独处理
print(n, end = "")
elif (int(n) > 0):#正数
if (int(n[-1]) == 0):#正数末尾有0
T = 1
list.append(T)
for i in range(-2, -(len(n)+1), -1):
if (int(n[i]) == 0):
T = T + 1
list.append(T)
else :
break
T = list[-1]
for i in range(-(T+1), -(len(n)+1), -1):
print(n[i], end = "")
else:#正数末尾无0
for i in range(-1, -(len(n)+1), -1):
print(n[i], end = "")
else :#负数
print("-", end = "")
if (int(n[-1]) == 0):#负数末尾有0
T = 1
list.append(T)
for i in range(-2, -(len(n)), -1):
if (int(n[i]) == 0):
T = T + 1
list.append(T)
else :
break
T = list[-1]
for i in range(-(T+1), -(len(n)), -1):
print(n[i], end = "")
else:#负数末尾无0
for i in range(-1, -(len(n)), -1):
print(n[i], end = "")
print("\r")
Accepted!