0
点赞
收藏
分享

微信扫一扫

数字根(暑假每日一题 49)


一个正整数的数字根是通过对该整数的各位数字求和得到的。

如果得到的结果是一个一位数字,则该这个数字就是所求的正整数的数字根。

如果得到的结果不止一位,则不断地对得到的中间结果进行各位数字求和,直到得到的最终结果为一位数字为止。

最终的得到的一位数字就是该正整数的数字根。

例如,对于整数 ,将 相加得到 ,而 是一位数字,所以

再考虑整数 ,将 相加得到 ,由于 不是一位数字,所以要继续对其进行各位数字求和,将 相加得到 是一位数字,所以

输入格式
输入包含多组测试数据。

每组数据占一行,包含一个正整数。

读到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;
}


举报

相关推荐

0 条评论