题目

问题描述

123321是一个非常特殊的数,它从左边读和从右边读是一样的。

输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

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

输出格式

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

样例输入

52

样例输出

899998

989989

998899

数据规模和约定

1<=n<=54。

解法一

我们首先想到的就是遍历所有五位数和六位数,将数字转成字符串再逆转然后判断是否为回文数,接着求各位数字之和判断是否等于n,满足以上两个条件就是答案。

n = int(input(''))for i in range(10000, 1000000):

num=str(i)

s= sum(int(j) for j innum)if s == n and num == num[::-1]:print(num)

以上代码提交显示运行超时。仔细一想不难发现这里其实是二重循环,因为sum()函数求和过程其实也是一个循环,从而导致算法复杂度增大。下面我们看改进代码:

n = int(input(''))for i in range(10000, 1000000):

num=str(i)if num == num[::-1]:if n == sum(int(j) for j innum):print(num)

以上代码显示通过。因为这里的算法复杂度已经降低了很多,我们先判断是否为回文数再来求数字之和,因为满足回文数的数字并不多,因此减少了很多无效的求和运算。

解法二

我们采用逆向思维,先保证是回文数再判断数字之和是否等于n。根据回文数左右两边对称的特点,我们可以将五位数到六位数的循环转换成三位数到四位数的循环。

n = int(input(''))

x=[]for i in range(100, 1000):if sum(map(int, str(i) + (str(i)[:2])[::-1])) ==n:

x.append(str(i)+ (str(i)[:2])[::-1])if sum(map(int, str(i) + str(i)[::-1])) ==n:

x.append(str(i)+ str(i)[::-1])for j insorted(x):print(j)

以上代码得分只有四十分。我们再看下面的改进代码:

n = int(input(''))

x=[]for i in range(100, 1000):if sum(map(int, str(i) + (str(i)[:2])[::-1])) ==n:

x.append(str(i)+ (str(i)[:2])[::-1])if sum(map(int, str(i) + str(i)[::-1])) ==n:

x.append(str(i)+ str(i)[::-1])for j insorted(map(int, x)):print(j)

我们观察两处代码的差异,其实只在对列表排序的时候将元素转成整型而已,至于为什么会得到不同的结果我想不清楚,如果有知道原因的读者烦请私聊我或者在下面留言。

python五位回文数_蓝桥杯,特殊回文数,Python相关推荐

  1. python求立方尾不变_蓝桥杯—立方尾不变,有些数字的立方的末尾正好是该数字本身...

    今天刷了一道蓝桥杯的习题,题目的要求如下: 立方尾不变 有些数字的立方的末尾正好是该数字本身. 比如:1,4,5,6,9,24,25,.... 请你计算一下,在10000以内的数字中(指该数字,并非它 ...

  2. python程序判断梅森素数_蓝桥杯每日一题(9):梅森素数(python)

    Topic: 假如一个数据的全部真因子之和相当于本身,则称它为"完全数"或"完美数" 比如:6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + ...

  3. python求立方尾不变_蓝桥杯:单词分析——————Python

    题目 试题 G: 单词分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超 ...

  4. python语言单词接龙_[蓝桥杯][算法训练VIP]单词接龙 (C语言代码)

    解题思路: 注意事项: 参考代码: #include #include #include int long_best=0,n; int * shu_zu, * zhefuc_size; char * ...

  5. 蓝桥杯——特殊回文数

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

  6. 蓝桥杯练习题 回文数

    蓝桥杯练习题 回文数 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. #include< ...

  7. 【蓝桥杯Python组】2022年第十三届蓝桥杯省赛B组Python解题思路详解

    第十三届蓝桥杯省赛B组Python解题思路详解 因为今年采用线上的举办方式进行比赛,所以组委会对题目做了一定的调整,将原来的5道填空+5道编程题变成了2道填空+8道编程题,据说是为了防止抄袭.其实题目 ...

  8. 蓝桥杯之算法模板题 Python版

    蓝桥杯之算法模板题 Python版 文章目录 蓝桥杯之算法模板题 Python版 线段树 DP 动态规划 dp, LIS ** 01背包 完全背包 多重背包 混合背包 分组背包 区间DP 一.什么是区 ...

  9. 2021年第十二届蓝桥杯软件类省赛python组

    目录 2021年第十二届蓝桥杯软件类省赛python组 1.卡片 常规做法 使用functions.Counter计数 2.直线 3.货物摆放 4.路径 5.回路计算 递归--太慢跑不出来 状态压缩D ...

最新文章

  1. 用IE重起计算机或者关机
  2. 我用2年时间从财务到数据分析师!
  3. Struts2学习笔记《二》
  4. SAP License:ERP系统会计凭证中的那些必填项
  5. Ajax提交数据判断员工编号是否存在,及自动填充与员工编号所对应的员工姓名。...
  6. Linux内核与文件系统分析
  7. 基于遗传算法的高校排课系统研究
  8. 高新计算机考试培训 ppt,全国计算机高新技术考试.ppt
  9. 树莓派3B制作无线wifi(桥接模式)
  10. ASP.NET微信开发视频教程
  11. 如何用matlab求出矩阵简化阶梯形顺带算出主元所在的列
  12. 隧道技术_复杂地质的隧道施工技术(下)
  13. 【个人笔记】SIPp学习-注册,呼叫与超时
  14. 用flatpak安装程序(比如GIMP)的方法
  15. jQuery判断email地址 邮箱地址 email regex
  16. C++学习(三)LHS RHS
  17. 银行卡被冻结 应该怎么处理?
  18. Oxygen Not Included
  19. android p nokia 6,Nokia 6评测 | Nokia 6系统体验_Nokia 6怎么样_诺基亚最新手机_什么值得买...
  20. 大学物理·第15章【量子物理】

热门文章

  1. net软件安装后不能卸载的解决方法
  2. C++的隐式转换和explicit关键字
  3. Caffe网络结构实现
  4. 【Linux】监视gpu使用情况
  5. nginx安装http2.0协议
  6. android 源码打patch
  7. android之camera2预览
  8. H264之sps解析分辨率
  9. Win10使用Xrdp脚本远程桌面连接Ubuntu主机
  10. r语言折线图_R语言基础入门视频教程——语法篇(完结)