Zerojudge 基礎題庫a040 阿姆斯壯數(Python)
題目要求輸入兩個數字,代表著範圍,並輸出範圍裡的阿姆斯壯數們。如沒有,輸出none。
從上面往下看,只要一有想法,可以直接拋棄這篇文章,追隨你的想法。
1. 什麼是阿姆斯壯數
從題目節錄所謂 Armstrong number 指的是一個 n 位數的整數,它的所有位數的 n 次方和恰好等於自己。
相信你沒有問題 :)
2. 如何開始?
如果是我,我會先做一個函數,判斷是否為阿姆斯壯數的函數3. 如何知道範圍內是否有阿姆斯壯數?
使用for迴圈,直接窮舉,再一一判斷是否為阿姆斯壯數。4.我要程式碼!!
自己寫才會進步,每人寫出的程式碼都有自己的特色,要好發掘自己的特色。def spreadNum(num): '''enter a string (integer) and returns the split ('3000' -> ['3', '0', '0', '0']) (list)''' list1 = list(num) return list1 def calSpread(list1): '''input: a list which is splitted (['3', '0', '0']) (list) output: the calculation of the num (integer)''' ans = 0 for i in list1: ans = ans + int(i) ** len(list1) return ans while 1: try: q = input() except: break q = q.split() button = int(q[0]) top = int(q[1]) ifTrue = False for i in range(button, top-1): if calSpread(spreadNum(str(i))) == i: print(i, end=" ") ifTrue = True if ifTrue == False: print("none") print()
留言
張貼留言