Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. For example: Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
方法一:采用循环:
int addDigits(int num) {
int sum;
while(num/10>0){
sum=0;
while(num>0){sum+=num%10;num/=10;}
num=sum;
}
return num;
}
方法二:先来观察1到20的所有的最终返回值:
1------1
2------2
3------3
.
.
.8-----8
9------9
10----1
11-----2
.
.
.
18----9
19----1
20----2
由此可以发现这是以9为循环,1-9,然后是10-18,然后是19-27,以此类推,某个数字n对应返回值(n-1)%9+1:
int addDigits(int num) {
int sum;
sum=(num-1)%9+1;
return sum;
}