程序设计 -- 数根(2)

数根是这样定义的:对于一个正整数 n,将它的各个数位上的数字相加得到一个新数,如果这个数是一位数,我们就称之为 n 的数根,否则重复处理直到它成为一个一位数。例如, n = 34 , 3 + 4 = 7 , 7 是一位数,所以 7 是 34 的数根。再如, n = 345 , 3 + 4 + 5 = 12, 1 + 2 = 3 , 3 是一位数,所以 3 是 345 的数根
对于输入数字 n ,编程计算它的数根。
输入格式
一个整数。( n <= 10^1000)
输出格式
一个整数。
输入样例
345
输出样例
3

#include <string>
#include <iostream>

int main()
{
    std::string n;
    std::cin >> n;
    int r = 0;
    for (auto c : n)
        r += c - '0';
    while (r >= 10)
    {
        int x = r;
        r = 0;
        while (x > 0)
        {
            r += x % 10;
            x /= 10;
        }
    }
    std::cout << r;
    return 0;
}