Add Digits

来源:互联网 发布:英语不好学java 编辑:程序博客网 时间:2024/05/02 04:15

方法一:

这道题让我们求树根,所谓树根,就是将大于10的数的各个位上的数字相加,若结果还大于10的话,则继续相加,直到数字小于10为止。那么根据这个性质,我们可以写出一个解法如下:

class Solution {public:    int addDigits(int num) {        while (num / 10 > 0) {            int sum = 0;            while (num > 0) {                sum += num % 10;                num /= 10;            }            num = sum;        }        return num;    }};

方法二:

1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8    
9    9    
10    1
11    2
12    3    
13    4
14    5
15    6
16    7
17    8
18    9
19    1
20    2

根据上面的列举,我们可以得出规律,每9个一循环所有大于9的数的树根都是对9取余,那么对于等于9的数对9取余就是0了,为了得到其本身,而且同样也要对大于9的数适用,我们就用(n-1)%9+1这个表达式来包括所有的情况,所以解法如下:

class Solution {public:    int addDigits(int num) {        return (num - 1) % 9 + 1;    }};



0 0