看这里,Python轻松破解回文数

对数字敏感且细心的小丽今天发现了一组奇特的数字,像这样的:12321、123321 … …

它们有一个共同的特征,无论从左向右读还是从右向左读,都是相同的。我们把这样的数字就叫做回文数字。


小丽有这样一个疑问:想知道5位或6位的十进制数字中都有哪些回文数字满足各个数位之和等于输入的整数。

看这里,Python轻松破解回文数

好奇的小丽

输入格式

<code>一个正整数n(10/<code>

输出格式

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

样例输出:
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499/<code>
<code>样例输入:
60

样例输出:
-1/<code>

读完这个问题,不知道你有思路了没有呢?如果有了,那你可以打开电脑,尝试着用Python来实现一下吧!如果没有思路,请不要着急,不要气馁,请跟着我的思路一起往下看。

看这里,Python轻松破解回文数

数字的乐趣

好了!我们一起来分析下这个问题,首先题目要求我们找出五位数和六位数的数字中满足既是回文数字又满足各个位数相加等于我们输入的数字。那么我们可以分出五位数和六位数的数字,接下来我们把各个位数单独分出来,然后进行比较是否满足条件。说到这里,聪明的你是否已经有了思路了呢?接下来让我们一起来学习如何使用Python来解决这个问题吧。

看这里,Python轻松破解回文数

数字的乐趣

【代码实现】

1、输入回文数字的各个位数之和n

<code>n = input("请输入回文数字的各个位数之和n:")/<code>

2、定义flag来记录满足条件的数的个数

<code>flag = 0 #记录满足条件的数的个数/<code>

3、找出五位数中满足条件的数

<code>for x in range(10000, 100000):#5位数的情况
    g = x%10 #个位数
    s = int(x/10)%10  #十位数
    b = int(x/100)%10 #百位数
    q = int(x/1000)%10 #千位数
    w = int(x/10000) #万位数
    if g==w and s==q and (g+s+b+q+w) == int(n):
        print(x)
        flag += 1/<code>

4、找出六位数中满足条件的数

<code>for x in range(100000,1000000):#6位数的情况
    g = x % 10  # 个位数
    s = int(x / 10) % 10  # 十位数
    b = int(x / 100) % 10  # 百位数
    q = int(x / 1000) % 10  # 千位数
    w = int(x / 10000) % 10  # 万位数
    sw = int(x / 100000) # 十万位数
    if g==sw and s==w and b==q and (g+s+b+q+w+sw)==int(n):
        print(x)
        flag += 1/<code>

5、如果没有满足条件的数字,则输出 -1

<code>if flag == 0:
    print(-1)/<code>

为了方便大家一口气的阅读代码,我们将全部的源代码写在下面,欢迎感兴趣的你阅读学习。

<code>n = input("请输入回文数字的各个位数之和n:")

flag = 0 #记录满足条件的数的个数
for x in range(10000,100000):#5位数的情况
    g = x%10 #个位数
    s = int(x/10)%10  #十位数
    b = int(x/100)%10 #百位数
    q = int(x/1000)%10 #千位数
    w = int(x/10000) #万位数
    if g==w and s==q and (g+s+b+q+w) == int(n):
        print(x)
        flag += 1


for x in range(100000,1000000):#6位数的情况
    g = x % 10  # 个位数
    s = int(x / 10) % 10  # 十位数
    b = int(x / 100) % 10  # 百位数
    q = int(x / 1000) % 10  # 千位数
    w = int(x / 10000) % 10  # 万位数
    sw = int(x / 100000) # 十万位数
    if g==sw and s==w and b==q and (g+s+b+q+w+sw)==int(n):
        print(x)
        flag += 1


if flag == 0:
    print(-1)/<code> 

你学会了吗?好了,今天的分享就到这里,如果你喜欢我分享的文章内容,欢迎关注本头条号 @科技时代聊编程。


分享到:


相關文章: