您的位置:首页 > 编程语言 > Java开发

【leetcode】Add Digits【java】

2015-08-16 22:24 411 查看
题目:

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.
将数的各个位相加直至和为个位数
思路:

此题为要求无递归和循环是数学问题,最后得到的一位数一定是(num-1)%9+1,(减一再加一是为了避免num=9)

假设一个多位数的最高位数的数字为X,其他位数的数字都为0,那么它余数一定是X (X不为9)

例如10除以9余1 200除以9余2
而本身就是个位数的数字只要不是9都不能整除9只能直接余
以此类推,你把多位数的数字用加法拆开然后分别除以9,得到的余数相加再除以9
以此重复就是最后的结果了
比如12345=10000+2000+300+40+5
(10000+2000+300+40+5) 除以9 余数分别是 1 2 3 4 5
1+2+3+4+5=15
再以此类推 得出 1+5=6
说穿了就是因为是10进制,单个数字值最大的数和进位的数字形成互补,要是用16进制要比10进制多出A-F这个几个数,除以9就不是这样的了.

代码:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode java