题目
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
对于一非负数,其构成为
∑
1
0
i
∗
a
i
=
∑
(
1
0
i
−
1
)
∗
a
i
+
∑
a
i
\sum{10^i*a_i} = \sum{(10^i-1)*a_i}+\sum{a_i}
∑10i∗ai=∑(10i−1)∗ai+∑ai,前面一部分都是9的倍数,我们可以对9取模将其去掉,为了防止答案本身是9的情况,我们需要先-1,再取模。
class Solution {
public:
int addDigits(int num) {
return (num-1)%9+1;
}
};