问题描述:
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n,
编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998 989989 998899
数据规模和约定 1<=n<=54。
代码如下:
def huiwen(m):#定义函数
num1 = 0
if m == 1:
print('00100')
elif m % 2 == 0: #考虑输入的值为偶数的情况
for i in range(10):#输出为5位数时,通过遍历求第1,2(1=4,2=5)位上的数
for j in range(10):
if 0 <= (m - 2 * (i + j)) < 10:#输出为5位数时,第3位上的数范围
c = m - 2 * (i + j)
print(i * 10000 + j * 1000 + c * 100 + j * 10 + i)
for i in range(100, 1000):#输出位6位数时,前三位与后三位相同,遍历取后三位的数字
a = i // 100#百位
b = i // 10 % 10#十位
c = i % 10#个位
if 2 * (a + b + c) == m:#输出位6位数时,前三位与后三位相同
print(a * 100000 + b * 10000 + c * 1000 + c * 100 + b * 10 + a)
else:#输入的值为奇数时,只有5位数
for i in range(10):#通过遍历求第1,2(1=4,2=5)位上的数
for j in range(10):
c = m - 2 * (i + j)
if 0 <= c < 10:#输出为5位数时,第3位上的数范围
num1 = i * 10000 + j * 1000 + c * 100 + j * 10 + i
print(num1)
n = int(input())
huiwen(n)
错误总结:原本想用三层for嵌套循环直接遍历出三个数字的结果,不过好像不可以(如果有大佬做出来了,希望可以发到评论区让我瞅瞅)。后看了其他博主的做法后(大家都好厉害),然后重新敲了一下,这次的结果非常完美。
知识梳理:
定义函数:
> def 函数名(参数):
> 代码.....
// 适用于整数除法
/ 适用于浮点数除法