1. 程式人生 > >OpenJ_Bailian - 2764 數根(模擬)

OpenJ_Bailian - 2764 數根(模擬)

數根可以通過把一個數的各個位上的數字加起來得到。如果得到的數是一位數,那麼這個數就是數根。如果結果是兩位數或者包括更多位的數字,那麼再把這些數字加起來。如此進行下去,直到得到是一位數為止。

比如,對於24來說,把2和4相加得到6,由於6是一位數,因此6是24的數根。再比如39,把3和9加起來得到12,由於12不是一位數,因此還得把1和2加起來,最後得到3,這是一個一位數,因此3是39的數根。

Input

一個正整數(小於10 1000)。

Output

一個數字,即輸入數字的數根。

Sample Input

24

Sample Output

6

 

解題思路:

資料範圍10^1000 所以輸入時需要考慮用字元陣列

第一次及以後每次累加的各位和就可以使用int存下了。

注意到這點其他就是模擬題意了,不斷取每位的數字並累加然後判斷是否是數根,如果小於10則說明是數根,跳出迴圈輸出結果。

AC程式碼:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
using namespace std;

char s[1010];

int main()
{
	while(~scanf("%s",s))
	{
		int sum=0;
		int l=strlen(s);
		for(int i=0;i<l;i++)
		{
			sum+=s[i]-'0';
		}
		while(sum>=10)
		{
			int m=sum;
			sum=0;
			while(m)
			{
				sum+=m%10;
				m/=10;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}