当前位置: 首页 > article >正文

python-回文数(一)

题目描述
若一个数(首位不为 0 )从左到右读与从右到左读都是一样,这个数就叫做回文数,例如 12521 就是一个回文数。
给定一个正整数,把它的每一个位上的数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止。给定的数本身不为回文数。
例如: 87 则有:
STEP1:87+78=165
STEP2:165+561=726
STEP3:726+627=1353
STEP4:1353+3531=4884
编写一个程序,输入 M ,输出最少经过几步可以得到回文数。
如果在 8 步以内(含 8 步)不可能得到回文数,则输出 0 。
输入格式
第 1 行一个正整数 L  ,代表测试数据的组数。
接下来 L 行每行一个整数 M , M 本身不为回文数。
输出格式
输出 L 行,第 i 行对应输入数据的第 i+1 行,输出最少需要的步数;如果步数大于 8 ,则输出 0 。
样例输入输出
样例输入
3
12
87
89
样例输出
1
4
0
数据范围
对于 100% 的数据,保证 12≤M≤100 。
来源/分类(难度系数:三星

循环 递归


完整代码展示:
a=int(input())
b=[]
for i in range(a):
     c=int(input())
     b.append(c)

d=[]
for j in range(0,len(b)):
     e=list(str(b[j]))
     f=e[:]
     f.reverse()
     g=0
     while f!=e:
           sum1=""
           sum2=""
           for k in range(0,len(e)):
                sum1+=e[k]
                sum2+=f[k]
           sum3=int(sum1)+int(sum2)
           e=list(str(sum3))
           f=e[:]
           f.reverse()
           g+=1
      if  g<=8:
            d.append(g)
      else:
            d.append(0)
for l in range(0,len(d)):
     print(d[l])

a=int(input())
b=[]
for i in range(a):
    c=int(input())
    b.append(c)

d=[]
for j in range(0,len(b)):
    e=list(str(b[j]))
    f=e[:]
    f.reverse()
    g=0
    while f!=e:
        sum1=""
        sum2=""
        for k in range(0,len(e)):
            sum1+=e[k]
            sum2+=f[k]
        sum3=int(sum1)+int(sum2)
        e=list(str(sum3))
        f=e[:]
        f.reverse()
        g+=1
    if g<=8:
        d.append(g)
    else:
        d.append(0)
for l in range(0,len(d)):
    print(d[l])

代码解释:
a=int(input())  “,导入用户需要处理的数据数量a。
b=[]
 for i in range(a):
       c=int(input())
       b.append(c)  
”,建立一个空列表b,接着循环a次:导入用户需要处理的数据c,并将其添加进列表b中。
for j in range(0,len(b)):
       e=list(str(b[j]))
       f=e[:]
       f.reverse()           
 ”,遍历b中元素,将b[j]转换为字符串并储存在列表e中,再将e复制赋给f。将f反转。
g=0
 while f!=e:
        sum1=""
        sum2=""
        for k in range(0,len(e)):
              sum1+=e[k]
              sum2+=f[k]
        sum3=int(sum1)+int(sum2)
        e=list(str(sum3))
        f=e[:]
        f.reverse()
        g+=1                                   
”,令g为循环密码子,用于记录操作次数。当f不等于e时:建立两个空字符串sum1,sum2,让sum1,sum2分别连接e和f中元素,再将sum1,sum2转换为可计算数值。令sum1,sum2之和为sum3,再将sum3转换为字符串储存的列表赋给e,将e复制赋给f后再将f反转。每循环一次,就令g+1,直至f==e,跳出整个while循环。
if  g<=8:
         d.append(g)
  else:
         d.append(0)
”,每遍历一次,就判断g是否小于等于8,如果是:则将g添加进d中,否则将0添加进d中。
for l in range(0,len(d)):
       print(d[l])               
”,遍历d中元素并依次打印。


运行效果展示:


1,本体来源:本题源于赛氪OJ

2,难度系数:三星

3,算法涉及:循环,递归

                           (声明:以上内容均为原创) 


http://www.kler.cn/a/303838.html

相关文章:

  • IC 脚本之python
  • HTTP常见的状态码有哪些,都代表什么意思
  • 使用 unicorn 和 capstone 库来模拟 ARM Thumb 指令的执行(一)
  • WEB攻防-通用漏洞SQL注入sqlmapOracleMongodbDB2等
  • 比ChatGPT更酷的AI工具
  • ArkTs简单入门案例:简单的图片切换应用界面
  • 4G MQTT网关在物联网应用中的优势-天拓四方
  • 组播 2024 9 11
  • 为什么mac打不开rar文件 苹果电脑打不开rar压缩文件怎么办
  • 基于Java-SpringBoot+vue实现的前后端分离信息管理系统设计和实现
  • element实现动态路由+面包屑
  • Vue的学习(三)
  • vue2响应式系统是如何实现的(手写)
  • 代码随想录刷题day32丨动态规划理论基础,509. 斐波那契数, 70. 爬楼梯, 746. 使用最小花费爬楼梯
  • 基于Python实现一个庆祝国庆节的小程序
  • Kubernetes 与 springboot集成
  • 【九盾安防】叉车使用安全新升级!指纹识别锁,验证司机操作权限
  • 关于我的阿里云服务器被入侵 - 分析报告
  • 春日课堂:SpringBoot在线教育解决方案
  • 限流,流量整形算法
  • 安全基础设施如何形成统一生态标准?OASA 硬件安全合作计划启动 | 2024 龙蜥大会
  • 【贪心算法】(二)贪心算法区间问题及进阶习题
  • 重学SpringBoot3-集成RocketMQ(二)
  • Python(TensorFlow和PyTorch)及C++注意力网络导图
  • Docker 安装 Nacos 教程
  • L3级智能网联汽车准入试点详细解析及所需材料