Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 26535 | Accepted: 8874 |
Description
For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
Input
Output
Sample Input
24 39 0
Sample Output
6 3
這道題要求求一個數的“樹根”。先求一個數每位數字之和,如果和不爲一個個位數,則將該數再求位數和,直到位數和爲個位數,這個個位數就是該數的“樹根”。
開始做的時候用的是遞歸寫的,結果超時了。正確解這題的做法是將該數字每位數字之和再mod 9。這就行了。
樹根=位數和(mod 9)
代碼:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char str[100];
int main()
{
while(scanf("%s",str))
{
if(str[0]=='0')
break;
int sum=0;
int len=strlen(str);
for(int i=0;i<len;i++)
{
sum+=str[i]-'0';
}
sum=sum%9;
if(!sum)
sum=9;
printf("%d\n",sum);
}
return 0;
}