给定一个非负整数 num,反复将其各位数字相加,直到结果只剩一位数为止。
例如,给定 num = 38,过程如下:3 + 8 = 11,1 + 1 = 2。由于 2 只有一位,返回它。
进阶:
能否在 O(1) 时间内不使用任何循环或递归来实现?
题目暗示这道题必然存在某种数学规律。写出几个数字找一找:
class Solution {
public:
int addDigits(int num) {
if(num<10)return num;
num%=9;
if(num ==0 )return 9;
return num;
}
};
这道题的知识点是 Digital root,详见 https://en.wikipedia.org/wiki/Digital_root。