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
标题有【转】字样的文章从别的地方转过来的,否则为个人学习笔记