標題:
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
def compute(n):
A_list = []
for i in range(1, n):
s = str(i)
k = len(s)
cnt = 0
for j in range(k):
cnt += int(s[j]) ** k
if cnt == i:
A_list.append(i)
return A_list
n = int(input())
A_list = compute(n)
sum = 0
for x in A_list:
print(x)
sum += x
print(sum)
複製代碼
作者:
許浩浩
時間:
2024-1-31 11:50
本帖最後由 許浩浩 於 2024-1-31 13:42 編輯
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 11:52
import math
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+=j
return total
n=int(input())
t=compute(n)
print(t)
複製代碼
回復
1#
鄭繼威
作者:
張桔熙
時間:
2024-1-31 11:54
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 11:58
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: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
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 13:52
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 13:52
import math
def compute(n):
total=0
for j in range(1,n):
str1=str(j)
s=0
for i in range(len(str1)):
s=s+math.pow(int(str1[i]),len(str1))
if(int(s)==int(str1)):
print(f"{str1}")
total+=j
return total
n=int(input())
t=compute(n)
print(t)
複製代碼
作者:
陳羨芮
時間:
2024-1-31 14:00
本帖最後由 陳羨芮 於 2024-1-31 14:07 編輯
import math
def compute(n):
total=0
for i in range(1,n):
s=0
str1=str(i)
for j in range(0,len(str1)):
s=s+math.pow(int(str1[j]),len(str1))
if int(s)==int(str1):
print(f"{str1}")
total=total+i
return total
n=int(input())
t=compute(n)
print(t)
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2