Try   HackMD

Problem J: Summing Sum

題目連結 UVa 11332

中文簡述

對於所有正整數 n ,我們定義一函數 f(n) 為 n 的每一個十進位數字的總和,若再把 f(n) 代入函數中可得最到 n,f(n),f(f(n)),f(f(f(n)))… 最後得到僅有一位數字的值,並定義該值為 g(n) 。

例如,當 n=1234567892 ,則:

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

所以, g(1234567892)=2 。

solution:

#include<iostream>
using namespace std;
int ans(int n)
{
	while(n>10)
	{
		int sum=0;
		while(n!=0)
		{
			sum+=n%10;
			n/=10;
		}
			n=sum;
	}
	return n;
}
int main()
{
	string str;
	while(cin>>str and str!="0")
	{
		int n=0,i;
		for(i=0;i<str.length();i++)
		{
			n+=(int)str[i]-'0';
		}
//		cout<<n<<endl;
		cout<<ans(n)<<endl;
	}
}

tags: UVA

回目錄 學習筆記