258. Add Digits

传统的loop方法

class Solution {
    public int addDigits(int num) {
        while(num/10!=0)
        {
            int temp =0 ;
            while(num!=0)
            {
                temp+=(num%10);
                num=num/10;
            }
            num=temp;
        }
        return num ;
    }
}

我有点讨厌的trick方法: 对于B进制来说 N最后遗留下来的数符合以下规则:
1.如果N=0,遗留下来的数就是0,
2.对于N!=0且N%(B-1)==0的数,遗留下来的数是(B-1).
3对于N!=0且N%(B-1)!=0的数,遗留下来的数是N mod(B-1);

综上可以写成:remian(n) = 1 + (N - 1) % (B-1);

对于十进制,有:

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

你可能感兴趣的:(258. Add Digits)