题目: 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例:
输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
思路: 模9 A0A1A2…An=A0(10^n)+A1(10*(n-1))+…+An(1) =A0(10^n -1 +1)+A1(10*(n-1) -1 +1)+…+An(1 -1 +1) 其中的n次方项-1后取模9均为0,只剩1 A0A1A2…An%9=A0+A1+…+An 所以模9正好为各个数位之和 需要考虑特殊情况,9的倍数,结果为9
class Solution:
def addDigits(self
, num
: int) -> int:
if num
<9:
return num
if num
%9==0:
return 9
while num
>9:
num
=num
%9
return num