给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例:
输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
当看到这题的时候感觉一脸o((⊙﹏⊙))o,
自己当时想的解法(但用了循环和判断)
class Solution(object):
def addDigits(self, num):
while True:
if num>9:
s=0
for i in range (len(str(num))):
s=int(str(num)[i])+s
num=s
else:
break
return num
下面来看看这题正确的解法
- c语言的解法
# include <stdio.h>
int main( int number)
{
if (number==0) return 0;
int i =number % 9;
return i==0?9:i;
}
- python 的解法
def run(num):
x=num and (num % 9 or 9)
print x
return x
run(90)
解法解析(下面是介绍的两种情况)
-
当一个非负整数不能被9整除的时候(一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数),这个数的各位相加等于它的余数
-
当一个非负整理(一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数)能被9整除的时候,它的各位相加等于9
网友评论