題目敘述
本題採EOF方式收資料,每筆資料有一個正整數N,當N為0時停止收資料。要求輸出f(N)的值。
當N=1234567時,
f(N) = 1 + 2 + 3 + 4 + 5 + 6 + 7 = 47
f(f(N) = 4 + 7 = 11
f(f(f(N))) = 1 + 1 = 2
所以答案為2。
範例輸入 #1
2
11
47
1234567892
0
範例輸出 #1
2
2
2
2
解題思路
使用函式的方式來處理每一個測資,收資料的時候可以使用字串來收資料並判斷字串的長度,進行計算時再把字串轉換成整數。
解題程式碼如下 (僅供參考):
#include <iostream>
using namespace std;
int go (string str)
{
if (str.length() == 1) return int(str[0] - '0');
else
{
int sum = 0;
for (int i = 0; i<str.length(); i++)
{
sum += int(str[i] - '0');
}
string tmp = to_string(sum);
if (tmp.length() == 1) return int(tmp[0] - '0');
else return go(tmp);
}
}
int main() {
string str;
while (cin >> str)
{
if (str == "0") break;
else
{
cout << go(str) << endl;
}
}
}
留言
張貼留言