看這裡,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> 

你學會了嗎?好了,今天的分享就到這裡,如果你喜歡我分享的文章內容,歡迎關注本頭條號 @科技時代聊編程。


分享到:


相關文章: