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()


留言

這個網誌中的熱門文章

Zerojudge 基礎題庫a004 文文的求婚 (Python)

紙蜻蜓的受風面積與紙蜻蜓落地時間的關係 #1 [實驗歷程與Python Matplotlib]

Zerojudge 基礎題庫a013 羅馬數字 (Python)