回文数字(求解)

 

目录

题目描述

 输入格式

 输出格式

 样例输入

 样例输出

 题目解析

 代码

 总结


题目描述

观察数字:12321,123321  都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。

 输入格式

 一个正整数  n  (10< n< 100),  表示要求满足的数位和。

 输出格式

 若干行,每行包含一个满足要求的5位或6位整数。 
数字按从小到大的顺序排列。 
如果没有满足条件的,输出:-1

 样例输入

 

44 

 样例输出

 

99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499

 题目解析

  1.  首先参照题目要求,从五位数到六位数的数字,这个数字满足回文数和并且将各位数的和相加等于输入的整数。
  2. 首先判断函数是否为回文数,再对各位数进行相加判断是否相等。

 代码

 

def f(n):#对各位数字进行相加并且返回
    n = str(n)#这里需要将数字进行str化,因为需要一个iterable
    sum_n = sum([int(i) for i in n])
    return sum_n
def f1(n):
    n = str(n)
    x = n[::-1]#这里进行字符串的反转,将步数变为-1即可。
    if( n == x):
        return True
    else:
        return False
while(True):
    try:
        count = 0
        x = int(input())
        for i in range(10000,1000000):
            if(f(i) == x and f1(i)):
                print(i)
                count+=1
        if count == 0:#没有则输出-1
            print(-1)
    except:
        break

 总结

 理解题目要求,做出相应的判断函数即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值