Board logo

標題: 310 函式與陣列 (阿姆斯壯數) [打印本頁]

作者: 鄭繼威    時間: 2024-1-30 15:57     標題: 310 函式與陣列 (阿姆斯壯數)

1. 題目說明:
請依下列題意進行作答,使輸出值符合題意要求。

2. 設計說明:
請撰寫一程式,包含名為compute()的函式,接收主程式傳遞的一個整數n(0 < n < 1000),compute()輸出所有小於n的阿姆斯壯數並回傳總和至主程式輸出。

阿姆斯壯數的定義:若為k位數的正整數,則其所有位數數字的k次方與該數相等。

補充說明:
阿姆斯壯數(Armstrong number),又稱自戀數(Narcissistic number)(因為各數字 n 次方後加總又等於本身,感覺很自戀?)。
例如 153 可以滿足 1³ + 5³ + 3³ = 153,153 就是個阿姆斯壯數,阿姆斯壯數有 88 個,最大為 39 位數的 115132219018763992565095597973971522401,已證實超過 39 位數不存在阿姆斯壯數。

提示:若使用 Java 語言答題,請以「JP」開頭命名包含 main 靜態方法的 class,評測系統才能正確評分。

3. 輸入輸出:
輸入說明
一個整數n(0 < n < 1000)

輸出說明
所有小於n的阿姆斯壯數與其總和

範例輸入
999
範例輸出
1
2
3
4
5
6
7
8
9
153
370
371
407
1346


本帖隱藏的內容需要回復才可以瀏覽
Python
  1. def compute(n):
  2.     A_list = []
  3.     for i in range(1, n):
  4.         s = str(i)
  5.         k = len(s)
  6.         cnt = 0
  7.         for j in range(k):
  8.             cnt += int(s[j]) ** k
  9.         if cnt == i:
  10.             A_list.append(i)
  11.     return A_list

  12. n = int(input())
  13. A_list = compute(n)
  14. sum = 0
  15. for x in A_list:
  16.     print(x)
  17.     sum += x
  18. print(sum)
複製代碼

作者: 許浩浩    時間: 2024-1-31 11:50

本帖最後由 許浩浩 於 2024-1-31 13:42 編輯
  1. def compute(n):
  2.     total=0
  3.     for j in range(1,n):
  4.         s=0
  5.         str1=str(j)
  6.         for i in range(0,len(str1)):
  7.             s=s+math.pow(int(str1[i]),len(str1))
  8.         if(int(s)==int(str1)):
  9.             print(f"{str1}")
  10.             total=total+j
  11.     return total
  12. import math
  13. n=int(input())
  14. t=compute(n)
  15. print(t)
複製代碼

作者: 沈敬翔    時間: 2024-1-31 11:52

  1. import math
  2. def compute(n):
  3.     total=0
  4.     for j in range(1,n):
  5.         s=0
  6.         str1=str(j)
  7.         
  8.         for i in range(0,len(str1)):
  9.             s=s+math.pow(int(str1[i]),len(str1))
  10.         
  11.         if int(s)==int(str1):
  12.             print(f"{str1}")
  13.             total+=j
  14.     return total

  15. n=int(input())
  16. t=compute(n)
  17. print(t)
複製代碼
回復 1# 鄭繼威
作者: 張桔熙    時間: 2024-1-31 11:54

  1. def compute(n):
  2.     total=0
  3.     for j in range(1,n):
  4.         s=0
  5.         
  6.         str1=str(j)
  7.         
  8.         for i in range(0,len(str1)):
  9.             s=s+math.pow(int(str1[i]),len(str1))
  10.             
  11.         if(int(s)==int(str1)):
  12.             print(f"{str1}")
  13.             total=total+j
  14.     return total
  15.    
  16. import math

  17. n=int(input())
  18. t=compute(n)
  19. print(t)
複製代碼

作者: 陳羨芮    時間: 2024-1-31 11:58

  1. def compute(n):
  2.     total=0
  3.     for j in range(1,n):
  4.         s=0
  5.         str1=str(j)
  6.         for i in range(0,len(str1)):
  7.             s=s+math.pow(int(str1[i]),len(str1))
  8.         if int(s)==int(str1):
  9.             print(f"{str1}")
  10.             total=total+j
  11.     return total
  12. import math
  13. n=int(input())
  14. t=compute(n)
  15. print(t)
複製代碼

作者: 王亭婷    時間: 2024-1-31 12:00

def compute(n):
    total=0
    for j in range(1,n):
        s=0
        str1=str(j)
        for i in range(0,len(str1)):
            s=s+math.pow(int(str1[i]),len(str1))
        
        if(int(s)==int(str1)):
            print(f"{str1}")
            total=total+j
    return total
import math
n=int(input())
t=compute(n)
print(t)
作者: 鄭傳諭    時間: 2024-1-31 12:02

  1. def compute(n):
  2.     total=0   
  3.     for j in range(1,n):
  4.         s=0
  5.         str1=str(j)
  6.         for i in range(0,len(str1)):
  7.             s=s+math.pow(int(str1[i]),len(str1))
  8.         if(int(s)==int(str1)):
  9.             print(f"{str1}")
  10.             total=total+j
  11.     return total
  12. import math
  13. n=int(input())
  14. t=compute(n)
  15. print(t)        
複製代碼

作者: 鄭傳諭    時間: 2024-1-31 13:52

  1. def compute(n):
  2.     total=0
  3.     for j in range(1,n):
  4.         s=0
  5.         str1=str(j)
  6.         for i in range(0,len(str1)):
  7.             s=s+math.pow(int(str1[i]),len(str1))
  8.         if(int(s)==int(str1)):
  9.             print(f"{str1}")
  10.             total=total+j
  11.     return total
  12. import math
  13. n=int(input())
  14. t=compute(n)
  15. print(t)
複製代碼

作者: 張桔熙    時間: 2024-1-31 13:52

  1. import math
  2. def compute(n):
  3.     total=0
  4.     for j in range(1,n):
  5.         str1=str(j)
  6.         s=0
  7.         for i in range(len(str1)):
  8.             s=s+math.pow(int(str1[i]),len(str1))
  9.             
  10.         if(int(s)==int(str1)):
  11.             print(f"{str1}")
  12.             total+=j
  13.     return total
  14.    
  15. n=int(input())

  16. t=compute(n)

  17. print(t)
複製代碼

作者: 陳羨芮    時間: 2024-1-31 14:00

本帖最後由 陳羨芮 於 2024-1-31 14:07 編輯
  1. import math
  2. def compute(n):
  3.     total=0
  4.    
  5.     for i in range(1,n):
  6.         s=0
  7.         str1=str(i)
  8.         for j in range(0,len(str1)):
  9.            s=s+math.pow(int(str1[j]),len(str1))
  10.         if int(s)==int(str1):
  11.             print(f"{str1}")
  12.             total=total+i
  13.     return total
  14. n=int(input())
  15. t=compute(n)
  16. print(t)
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2