c813: 11332 - Summing Digits

  1. 1. 內容
  2. 2. 範例輸入
  3. 3. 範例輸出
  4. 4. 想法
  5. 5. 程式碼

CPE 一顆星選集 49 道必考題

題目連結:https://zerojudge.tw/ShowProblem?problemid=c813

內容

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

例如,當 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 。

給定一個整數 n (0 < n <= 2*10^9),輸出 g(n)。

n = 0 代表結束。

範例輸入

2
11
47
1234567892
0

範例輸出

2
2
2
2

想法

跟找 n 除以 9 的餘數差不多,差別只在於若整除則輸出 9 。

程式碼

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(false), cin.tie(nullptr)
using namespace std;

int main(){
fastio;
int n;
while(cin >> n && n){
if(n % 9 == 0) cout << 9 << "\n";
else cout << n%9 << "\n";
}
return 0;
}