藍橋杯 基礎練習 特殊回文數 (python實現)

2021-10-03 21:25:12 字數 1979 閱讀 6361

資源限制

時間限制:1.0s 記憶體限制:512.0mb

問題描述

123321是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的。

輸入乙個正整數n, 程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 。

輸入格式

輸入一行,包含乙個正整數n。

輸出格式

從小到大的順序輸出滿足條件的整數,每個整數佔一行。

樣例輸入

52樣例輸出

899998

989989

998899

資料規模和約定

1<=n<=54

第一次提交的**:

# 遍歷所有五位數和六位數,

# 求各位數字之和判斷是否等於n,

# 接著將數字轉成字串再逆轉然後判斷是否為回文數

n =int

(input()

)for i in

range

(10000

,1000000):

num =

str(i)

result =

0for j in num :

result +=

int(j)

if result == n and num == num[::

-1]:

print

(num)

結果:嚴重超時!分析發現中間有兩重迴圈,求和也是乙個迴圈,並且對於不是「特殊回文數」的數,也進行了求和操作,做了很多無效運算。

第二次提交的**:

# 先判斷是回文數,再求和

n =int

(input()

)for i in

range

(10000

,1000000):

num =

str(i)

if num == num[::

-1]:

result =

0for j in num :

result +=

int(j)

if result == n :

print

(num)

結果:滿分!但是時間耗費了390ms

第三次提交的**:

n =

int(

input()

)my_list =

for i in

range

(100

,1000):

# 如果該數字是6位數

ifsum

(map

(int

,str

(i)+

str(i)[:

:-1]

))== n :

str(i)

+str

(i)[::

-1])

# 如果該數字是5位數

ifsum

(map

(int

,str

(i)+

str(i)[:

2][:

:-1]

))== n :

str(i)

+str

(i)[:2

][::

-1])

for i in

sorted

(map

(int

,my_list)):

# 排序

print

(i)

結果:滿分!用時31ms。通過對稱處理,減少了很多運算。

藍橋杯基礎練習 特殊回文數

時間限制 1.0s 記憶體限制 512.0mb 問題描述 123321是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的。輸入乙個正整數n,程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 輸入格式 輸入一行,包含乙個正整數n。輸出格式 按從小到大的順序輸出滿足條件的整數,每個整數佔一...

藍橋杯「基礎練習 特殊回文數

問題描述 123321是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的。輸入乙個正整數n,程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 輸入格式 輸入一行,包含乙個正整數n。輸出格式 按從小到大的順序輸出滿足條件的整數,每個整數佔一行。樣例輸入 52樣例輸出 899998 989...

藍橋杯 基礎練習 特殊回文數

問題描述 123321是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的。輸入乙個正整數n,程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 輸入格式 輸入一行,包含乙個正整數n。輸出格式 按從小到大的順序輸出滿足條件的整數,每個整數佔一行。樣例輸入 樣例輸出 899998 98998...