Add Digits
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
For example:
Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
假设num的各位数是a,b,c
则num = a*100 + b*10 + c = a+b+c + a*99+b*9+0
那么num%9 = (a+b+c + a*99+b*9+0)%9 = (a+b+c)%9
所以只要用num对9取模就是可能的结果。如果num%9=0说明a+b+c=9,那么返回9,否则返回num%9
class Solution { public: int addDigits(int num) { if(num==0) return 0; return num%9==0? 9:num%9; } };
写者:zengzy
出处: http://www.cnblogs.com/zengzy
标题有【转】字样的文章从别的地方转过来的,否则为个人学习笔记
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号