
image.png
給定一個(gè)非負(fù)整數(shù) num,反復(fù)將各個(gè)位上的數(shù)字相加,直到結(jié)果為一位數(shù)。
示例:
輸入: 38
輸出: 2
解釋: 各位相加的過(guò)程為:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位數(shù),所以返回 2。
當(dāng)看到這題的時(shí)候感覺(jué)一臉o((⊙﹏⊙))o,
自己當(dāng)時(shí)想的解法(但用了循環(huán)和判斷)
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
下面來(lái)看看這題正確的解法
- c語(yǔ)言的解法
# 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)
解法解析(下面是介紹的兩種情況)
當(dāng)一個(gè)非負(fù)整數(shù)不能被9整除的時(shí)候(一個(gè)非負(fù)整數(shù) num,反復(fù)將各個(gè)位上的數(shù)字相加,直到結(jié)果為一位數(shù)),這個(gè)數(shù)的各位相加等于它的余數(shù)
當(dāng)一個(gè)非負(fù)整理(一個(gè)非負(fù)整數(shù) num,反復(fù)將各個(gè)位上的數(shù)字相加,直到結(jié)果為一位數(shù))能被9整除的時(shí)候,它的各位相加等于9
關(guān)于Python中的and

image.png