题目描述 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例
输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
解题思路
三位数整数 n=100a+10b+c,变化后 addn=a+b+c,两者的差值n-addn=99a+9b 是9的倍数。
说明n和addn对于9,即n%9==addn%9。那么变化到最后,与n同余的个位数,也就是n%9
代码
class Solution {
public:
int addDigits(int num) {
if(num<10) return num;
if(num%9==0) return 9;
else return num%9;
return 0;
}
};