蓝桥杯Python练习题4-回文数

一、回文数

资源限制
内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式
按从小到大的顺序输出满足条件的四位十进制数。

思路
(1)Python整除函数:
  若a=1001,则a = m//1000 = 1
(2)求余:
  b = m % 10
(3)将一个四位数的每一位分解出来:
  a = n//1000
  b = n//100 % 10
  c = m//10 % 100 % 10
  d = m % 1000 % 100 % 10

代码

l = []
for n in range(1000,10000):
    a = n//1000
    b = n//100 % 10
    c = n//10 % 100 % 10
    d = n % 1000 % 100 % 10
    if a == d and b == c:
        l.append(n)
for i in l:
    print(i)

运行截图

在这里插入图片描述

二、特殊回文数

资源限制
内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式
输入一行,包含一个正整数n。

输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入
52

样例输出
899998
989989
998899

数据规模和约定
1<=n<=54。

代码

n=int(input())
l=[]
if n>=1 and n<=54:
    for a in range(1,10):
        for b in range(0,10):
            for c in range(0,10):
                if 2*a+2*b+c==n:
                    l.append(int(str(a)+str(b)+str(c)+str(b)+str(a)))
                if 2*(a+b+c)==n:
                    l.append(int(str(a)+str(b)+str(c)+str(c)+str(b)+str(a)))
l.sort() #排序
for i in l:
    print(i)

运行截图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YSL_Lsy_/article/details/128474333
今日推荐