iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
SideProject30

UVA題型研究系列 第 8

DAY8:Function brought into

  • 分享至 

  • xImage
  •  

10 UVA11332 Summing Digits
內容
對於所有正整數
,我們定義一函數

的每一個十進位數字的總和,若再把
代入函數中可得最到
最後得到僅有一位數字的值,並定義該值為

例如,當 n = 1234567892
,則:
f(n) = 1+2+3+4+5+6+7+8+9+2 = 47
f(f(n)) = 4 + 7 = 11
f(f(f(n))) = 1 + 1 = 2
所以,g(1234567892) = 2

輸入說明
輸入的每一行會有一個正整數
,其值最大到
,你必須輸出
。輸入是以
值做為結束,該值不需要輸出。

輸出說明
如輸入所述。

範例輸入 #1
2
11
47
1234567892
0
範例輸出 #1
2
2
2
2

題意:對於所有正整數 n ,我們定義一函數 f(n) 為 n 的每一個十進位數字的總和,若再把 f(n) 代入函數中可得最到 n,f(n),f(f(n)),f(f(f(n)))… 最後得到僅有一位數字的值,並定義該值為 g(n)

解題:題目有給相加的過程


#定義一個函數,用於計算一個整數的各個數位之和
def abc(i):
    m = 0  # 初始化變數m,用於存儲各個數位之和
    while i > 0:  # 當i大於0時,繼續執行循環
        m += i % 10  # 將i的最後一個數位取出並加到m中
        i //= 10  # 刪除i的最後一個數位
    return m  # 返回各個數位之和

#進入主循環,持續讀取用戶輸入的整數
while True:
    try:
        i = int(input())  # 嘗試從用戶獲取一個整數

        if i == 0:  # 如果用戶輸入0,則退出主循環
            break

        #進入一個內部循環,當i大於等於10時持續執行
        while i >= 10:
            i = abc(i)  #使用abc函數計算i的各個數位之和,將結果賦值給i

        print(i)  #輸出i,即各個數位之和

    except EOFError:
        break  #當達到文件結束時退出主循環

上一篇
DAY7:Encryption and decryption
下一篇
DAY9:Find the same letters
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言