一个正整数的数字根是通过对该整数的各位数字求和得到的。
如果得到的结果是一个一位数字,则该这个数字就是所求的正整数的数字根。
如果得到的结果不止一位,则不断地对得到的中间结果进行各位数字求和,直到得到的最终结果为一位数字为止。
最终的得到的一位数字就是该正整数的数字根。
例如,对于整数 ,将
和
相加得到
,而
是一位数字,所以
是
再考虑整数 ,将
和
相加得到
,由于
不是一位数字,所以要继续对其进行各位数字求和,将
和
相加得到
,
是一位数字,所以
是
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个正整数。
读到0时表示输入结束。
输出格式
每组数据输出一行一个结果,表示给定整数的数字根。
数据范围
输入整数不超过 位。
每个输入最多包含
输入样例:
24
39
0
输出样例:
6
3
#include<iostream>
using namespace std;
int get(string s){
if(s.size() == 1) return stoi(s);
while(s.size() > 1){
int x = 0;
for(auto &c: s) x += (c - '0');
s = to_string(x);
}
return stoi(s);
}
int main(){
string s;
while(cin >> s, s != "0") cout << get(s) << endl;
return 0;
}
性质:一个数除余 9 的余数 和 其各位数字之和除余 9 的余数相同,即同余。
#include <iostream>
using namespace std;
int main()
{
string str;
while (cin >> str, str != "0")
{
int sum = 0;
for (auto c: str)
sum += c - '0';
sum %= 9;
if (!sum) sum = 9;
cout << sum << endl;
}
return 0;
}