123321 是一个非常特殊的数,从左边读和从右边读是一样的,称这样的数为回文数。输入一个正整数n(1≤n≤54),编程求各位数字之和等于n的5位和6位十进制回文数按从小到大的顺序输出满足条件的整数。如果输入的数不在指定的范围,输出“输入错误,请重新输入!”如果没有各位之和与输入的数相等的5位和6位回文数,输出“无满足条件的数”
减少循环次数,根据回文数的定义和特点,进行定向搜索:
n = int(input())
for i in range(1, 10):
for j in range(10):
k = n - (i+j)*2
if k < 0: continue
print(i*10000+j*1000+k*100+j*10+i)
if n % 2 == 0: # 当n是奇数时,没有六位数的回文数
for i in range(1, 10):
for j in range(10):
k = n//2 - i - j
if k < 0: continue
print(i*100000+j*10000+k*1000+k*100+j*10+i)
好的:
n = int(input('输入一个正整数n(1≤n≤54):'))
if n >=1 and n<=54:
result = []
for num in range(10000,999999):
if str(num) == str(num)[::-1]:#判断是否是回文数
total = sum([int(x) for x in str(num)])
if total == n:
result.append(num)
if result:
result.sort()
print(' '.join(map(str,result)))
else:
print('无满足条件的数')
else:
print('输入错误,请重新输入!')
def is_palindrome(num):
return
运行结果: