这是描述:回文数是一种特殊的数,从左边读和从右边读是一样的,比如123321就是一个回文数。现在给定一个正整数n(n≤54),编程求出一个回文数,要求该回文数的各位数字之和等于n,且该回文数大于10000,小于等于99999。如果有多个满足条件的回文数,输出最小的这个;如果没有满足条件的回文数,输出"Not found"。
例如,给定n=16,满足条件的最小回文数是13831。
再比如给定n=10,满足条件的最小回文数是10801。
以下是我找到的一段代码,基本符合题意但输出为所有满足条件的回文数而不是最小的,希望各位帮忙改改
n = int(input())
for i in range(10000,100000):
a1 = i % 10 # 个位数
a2 = i // 10 % 10 # 十位数
a3 = i // 100 % 10 # 百位数
a4 = i // 1000 % 10 # 千位数
a5 = i // 10000 # 万位数
if a1+a2+a3+a4+a5 == n and a1 == a5 and a2 == a4:
print(i)
for i in range(100000,1000000):
a1 = i % 10 # 个位数
a2 = i // 10 % 10 # 十位数
a3 = i // 100 % 10 # 百位数
a4 = i // 1000 % 10 # 千位数
a5 = i // 10000 % 10 # 万位数
a6 = i // 100000 # 十万位数
if a1+a2+a3+a4+a5+a6 == n and a1 == a6 and a2 == a5 and a3 == a4:
print(i)
n = int(input())
found = False
# 枚举五位数
for i in range(10000, 100000):
a1 = i % 10 # 个位数
a2 = i // 10 % 10 # 十位数
a3 = i // 100 % 10 # 百位数
a4 = i // 1000 % 10 # 千位数
a5 = i // 10000 # 万位数
if a1 + a2 + a3 + a4 + a5 == n and a1 == a5 and a2 == a4:
print(i)
found = True
break
# 如果五位数中没有满足条件的回文数,再枚举六位数
if not found:
for i in range(100000, 1000000):
a1 = i % 10 # 个位数
a2 = i // 10 % 10 # 十位数
a3 = i // 100 % 10 # 百位数
a4 = i // 1000 % 10 # 千位数
a5 = i // 10000 % 10 # 万位数
a6 = i // 100000 # 十万位数
if a1 + a2 + a3 + a4 + a5 + a6 == n and a1 == a6 and a2 == a5 and a3 == a4:
print(i)
found = True
break
# 如果还是没有满足条件的回文数,输出 "Not found"
if not found:
print("Not found")
你把满足条件的回文数放入list,然后从list里拿最小的输出就行了,list.sort(),list[0]