#40805: 解答 python


n0970616056@gmail.com (CIOU-HE-CHEN)

學校 : 不指定學校
編號 : 273811
來源 : [111.253.1.171]
最後登入時間 :
2024-06-14 11:55:43
a040. 阿姆斯壯數 | From: [27.247.62.93] | 發表日期 : 2024-06-13 21:06

解答

def is_armstrong_number(num): digits = list(map(int, str(num))) n = len(digits) return num == sum(d ** n for d in digits) def find_armstrong_numbers(n, m): armstrong_numbers = [num for num in range(n, m + 1) if is_armstrong_number(num)] return armstrong_numbers def main(): import sys input = sys.stdin.read().strip() n, m = map(int, input.split()) armstrong_numbers = find_armstrong_numbers(n, m) if armstrong_numbers: print(" ".join(map(str, armstrong_numbers))) else: print("none") if __name__ == "__main__": main()

思路

好的,我會努力讓解釋更人性化並易於理解。以下是對於 Armstrong number 問題的解釋和解決方案: ### Armstrong Number 定義 Armstrong number 是指一個數字,其每個位數的 n 次方之和等於該數字本身。舉個例子,數字 1634 是一個 Armstrong number,因為: \[ 1^4 + 6^4 + 3^4 + 4^4 = 1634 \] ### 問題描述 你需要在給定的範圍內找出所有的 Armstrong number。如果範圍內沒有 Armstrong number,則輸出 "none"。 ### 輸入輸出格式 **輸入**: 一行包含兩個數字 n 和 m,表示範圍 [n, m] (n < m, n > 0, m ≤ 1000000)。 **輸出**: 在範圍內的所有 Armstrong number,按從小到大的順序輸出。如果沒有找到,則輸出 "none"。 ### 範例 **輸入**: ``` 100 999 ``` **輸出**: ``` 153 370 371 407 ``` **輸入**: ``` 10 99 ``` **輸出**: ``` none ``` ### 解決方案 以下是解決這個問題的 Python 程式碼: ```python def is_armstrong_number(num): digits = list(map(int, str(num))) n = len(digits) return num == sum(d ** n for d in digits) def find_armstrong_numbers(n, m): armstrong_numbers = [num for num in range(n, m + 1) if is_armstrong_number(num)] return armstrong_numbers def main(): import sys input = sys.stdin.read().strip() n, m = map(int, input.split()) armstrong_numbers = find_armstrong_numbers(n, m) if armstrong_numbers: print(" ".join(map(str, armstrong_numbers))) else: print("none") if __name__ == "__main__": main() ``` ### 程式碼解釋 1. **`is_armstrong_number` 函數**: 檢查一個數字是否為 Armstrong number。 - 將數字轉換為其各個位數的列表。 - 計算每個位數的 n 次方之和,並檢查是否等於原數字。 2. **`find_armstrong_numbers` 函數**: 在給定範圍內尋找所有的 Armstrong number。 - 使用列表生成式來篩選範圍內的 Armstrong number。 3. **`main` 函數**: 讀取輸入,解析範圍並調用 `find_armstrong_numbers` 函數獲取結果。 - 如果找到 Armstrong number,則依序輸出;否則輸出 "none"。 ### 測試 你可以將這段程式碼保存到一個 Python 檔案中,然後通過以下方式進行測試: ```bash echo "100 999" | python script.py echo "10 99" | python script.py ``` 這樣可以確保程式能正確處理並輸出結果。如果還有其他問題或需要進一步的幫助,請告訴我!

 
ZeroJudge Forum