資源限制
時間限制: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...