給定一個非負(fù)整數(shù) num顿肺,反復(fù)將各個位上的數(shù)字相加君纫,直到結(jié)果為一位數(shù)奸鬓。
示例:
輸入: 38
輸出: 2
解釋: 各位相加的過程為:3 + 8 = 11, 1 + 1 = 2竿开。 由于 2 是一位數(shù)谱仪,所以返回 2。
C++
找規(guī)律否彩。假如一個三位數(shù)'abc'疯攒,其值大小為s1 = 100 * a + 10 * b + 1 * c,經(jīng)過一次各位相加后列荔,變?yōu)閟2 = a + b + c敬尺,減小的差值為(s1 -s2) = 99 * a + 9 * b称杨,差值可以被9整除,每一個循環(huán)都這樣筷转,縮小了9的倍數(shù)姑原。當(dāng)num小于9,即只有一位時呜舒,直接返回num锭汛,大于9時,如果能被9整除袭蝗,則返回9(因為不可能返回0也不可能返回兩位數(shù)及以上的值)唤殴,如果不能被整除,就返回被9除的余數(shù)
class Solution {
public:
int addDigits(int num) {
if(num==0)
return 0;
if(num%9==0)
return 9;
return num%9;
}
};