目录
题目描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入格式
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出格式
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899 499994 589985 598895 679976 688886 697796 769967 778877 787787 796697 859958 868868 877778 886688 895598 949949 958859 967769 976679 985589 994499
题目解析
- 首先参照题目要求,从五位数到六位数的数字,这个数字满足回文数和并且将各位数的和相加等于输入的整数。
- 首先判断函数是否为回文数,再对各位数进行相加判断是否相等。
代码
def f(n):#对各位数字进行相加并且返回
n = str(n)#这里需要将数字进行str化,因为需要一个iterable
sum_n = sum([int(i) for i in n])
return sum_n
def f1(n):
n = str(n)
x = n[::-1]#这里进行字符串的反转,将步数变为-1即可。
if( n == x):
return True
else:
return False
while(True):
try:
count = 0
x = int(input())
for i in range(10000,1000000):
if(f(i) == x and f1(i)):
print(i)
count+=1
if count == 0:#没有则输出-1
print(-1)
except:
break
总结
理解题目要求,做出相应的判断函数即可。