【题意】找数根,所谓的数根用例子来说明。如果是24,则24相加,如果结果是单位数,则为数根。如果是39,相加得12,则再次相加得3为数根。
注意:题目没有说明整数范围,其实整数范围很大,至少1000位。
思路:用字符串存刚开始的数,然后将各位相加。后边用不到对字符串的处理,因为每一位最大为9,1000位不过9000,所以后边存在int里处理就行。
【代码:WA】
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cstdio>
using namespace std;
long long int fun(long long int n)
{
long long int sum = 0;
while (n)
{
sum += n%10;
n /= 10;
}
return sum;
}
int main()
{
long long int n = 0;
while (cin >> n && n)
{
while (true)
{
n = fun(n);
if (n < 10)
break;
}
cout << n << endl;
}
return 0;
}
【代码:AC】
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdio>
using namespace std;
#define MAX 1000+3
int fun(int n)
{
int sum = 0;
while (n)
{
sum += n%10;
n /= 10;
}
return sum;
}
int main()
{
char num[MAX];
int n = 0;
while (cin >> num && num[0] != '0')
{
int i = 0;
n = 0;
for (i = 0; i < strlen(num); i++)
n += num[i] - '0';
if (n < 10)
cout << n << endl;
else
{
while (true)
{
n = fun(n);
if (n < 10)
break;
}
cout << n << endl;;
}
}
return 0;
}