開啟章節選單

11332 Summing Digits

題目連結

題目敘述

對於一個正整數 n,定義 f(n) 為 n 各位數字的總和。 這個操作若反覆進行,最終會得到一個一位數,這個值稱作 g(n)。

輸入格式

每行有一個正整數 nn <= 2,000,000,000 ,最後一行以 n = 0 結尾。

輸出格式

對於每個輸入的數字,輸出 g(n),每行一個結果。

解題思路

用遞迴反覆加總每位數,直到數字小於 10。

程式碼

#include<bits/stdc++.h>
using namespace std;

int f(int n) {
    if (n < 10) return n;
    int t = 0;
    while (n > 0) {
        t += n % 10;
        n /= 10;
    }
    return f(t);
}

int main() {
    int n;
    while(cin >> n && n) {
        cout << f(n) << "\n";
    }
}