筆者有用C++來解高中生解題系統上的 高中生程式解題系統:阿姆斯壯數 Armstrong number
(題目連結:https://zerojudge.tw/ShowProblem?problemid=a040) 一題。
本篇換用 Python 程式語言來解,而當時所寫的 C++ 為先建立好阿姆斯壯數的對應表,算有點偷吃步,這次用演算法來解囉。首先要知道數字是幾位數,可將數字轉成字串後,在呼叫計算字串長度函數 order = len(str(x)) ,接著就是將每位數的 order 次方加總(s),並檢查是否與原來數字相等。
Python程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import sys def isArm (x): order = len(str(x)) temp = x s = 0 while (temp != 0): r = temp % 10 s = s + (r ** order) temp = temp // 10 return (s == x) for s in sys.stdin: n, m = map(int, s.split()) flag = False for i in range(n, m): if isArm(i): flag = True print(str(i), end = " ") if flag == False: print("none") else: print() |
沒有留言:
張貼留言