傳統的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;
}
};