题意
将一个数的所有位数加起来得到一个数,如果这个数是个位数就结束,否则继续加,直到是个位数。例如38->3+8=11->1+1=2,最终结果是2。
现在需要你不使用任何递归和循环来得到这个结果。
解题思路
我们可以发现一些规律
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
以9为循环节。
所以我们只需要对9进行模除即可。
注意0%9=0,跟9%9=0所得到的结果不一样。
参考代码
//java
public class Solution {
public int addDigits(int num) {
if (num == 0) return 0;
int k = num % 9;
if (k == 0) return 9;
return k;
}
}