0
点赞
收藏
分享

微信扫一扫

软件学院oj1094: Summing Digits

忍禁 2022-03-11 阅读 54
c++

For a positive integer n, let f (n) denote the sum of the digits of n when represented in base 10. It is easy to see that the sequence of numbers n, f (n), f (f (n)), f (f (f (n))),... eventually becomes a single digit number that repeats forever. Let this single digit be denoted g (n).
 For example, consider n = 1234567892. Then:
    f(n) = 1+2+3+4+5+6+7+8+9+2 = 47
    f(f(n)) = 4 + 7 = 11
    f(f(f(n))) = 1 + 1 = 2
    Therefore, g(1234567892) = 2.
 

Each line of input contains a single positive integer n at most 2,000,000,000. Input is terminated by n = 0 which should not be processed. 

For each such integer, you are to output a single line containing g(n).

2
11
47
1234567892
0
2
2
2
2
#include <iostream>
typedef long long ll;
using namespace std;
ll f(ll n)
{
	ll sum=0,ans;
	while(n>0)
	{
		sum=sum+n%10;
		n/=10;
	}
	if(sum>=10)ans=f(sum);
	else ans=sum;
	return ans;
}
int main()
{
	ll n;
	while(~scanf("%lld",&n)&&n!=0)
	{
		ll ans=f(n);
		printf("%lld\n",ans);
	}
	return 0;
}
举报

相关推荐

0 条评论