Add Digits

方法一:

這道題讓我們求樹根,所謂樹根,就是將大於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;
    }
};



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章