Python 蓝桥杯试题 基础练习 特殊回文数

Python 蓝桥杯试题 基础练习 特殊回文数

问题描述:

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 函数名(参数):
> 	代码.....

// 适用于整数除法
/ 适用于浮点数除法

你可能感兴趣的:(python,笔记,python,蓝桥杯,开发语言)