a040: 阿姆斯壯數
這篇教學會示範 ZeroJudge 基礎題庫「a040: 阿姆斯壯數」的解題過程。
題目需求
阿姆斯壯數 ( Armstrong number ) 是指的是一個 n 位數的整數,它的所有位數的 n 次方和恰好等於自己,例如下圖的 1634 就是一個阿姆斯壯數。
題目會給予兩個數字,透過程式求出兩個數字的範圍間,有多少個阿姆斯壯數。
題目連結:a040: 阿姆斯壯數
解答
首先將輸入的兩個數字轉換成數字,並依序取出範圍內的每個數字,取出數字後將數字轉換成字串,取得字串長度後,根據阿姆斯壯數的規則進行數字加總,如果最後數字不相同,就不是阿姆斯壯數,如果相同就是阿姆斯壯數。
while True:
try:
p, q = map(int, input().split(' ')) # 將輸入的文字轉換成兩個數字
result = False # 預設 result 為 False
for i in range(p, q): # 取出 p q 範圍內的所有數字
a = str(i) # 數字轉換成文字
m = len(a) # 取得文字的長度
b = 0 # 預設變數 b 為 0
for j in a:
b = b + int(j)**m # 設定 b 為每個數字乘以位數的加總
if b == i: # 如果符合阿姆斯壯數規則
result = True # 設定 result 為 True
print(b, end=' ') # 印出阿姆斯壯數
if not result:
print('none') # 否則印出 none
except:
break
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~