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
微信扫码关注
抖音扫码关注