leetcode 258. Add Digits(数论)
2016-04-26 03:15
405 查看
Given a non-negative integer
For example:
Given
这道题是求一个数的数根。
数根有一个同余性质:一个数与它的数根对(b-1)同余(b是进制数)。
举个简单的例子就明白了:
123=1*100+2*10+3
=1*(99+1)+2*(9+1)+3
=(99+2*9)+(1+2+3)
前面一项能被9整除,后面的一项就是各个位上数的和。对1+2+3后得到的数,还是可以这么拆分,一直下去直到数根。
所以一个数与它的数根对(b-1)同余(b是进制数)。
对于本题,我们就利用这个性质求数根,因为数根是一位数,而且数根%9和num%9结果一样的,所以我们就直接num%9,但是我们这里求出来的数不是数根,数根是[0,9],而%9求出的是[1,8],所以我们加一个小的处理技巧:先减1,模了以后再加1.
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
2has only one digit, return it.
这道题是求一个数的数根。
数根有一个同余性质:一个数与它的数根对(b-1)同余(b是进制数)。
举个简单的例子就明白了:
123=1*100+2*10+3
=1*(99+1)+2*(9+1)+3
=(99+2*9)+(1+2+3)
前面一项能被9整除,后面的一项就是各个位上数的和。对1+2+3后得到的数,还是可以这么拆分,一直下去直到数根。
所以一个数与它的数根对(b-1)同余(b是进制数)。
对于本题,我们就利用这个性质求数根,因为数根是一位数,而且数根%9和num%9结果一样的,所以我们就直接num%9,但是我们这里求出来的数不是数根,数根是[0,9],而%9求出的是[1,8],所以我们加一个小的处理技巧:先减1,模了以后再加1.
class Solution { public: int addDigits(int num) { return 1+(num-1)%9; } };
相关文章推荐
- [Angular 2] Rendering an Observable with the Async Pipe
- 我对js原型链的理解
- div变为输入框
- 趋势安全云
- 闲谈
- C语言 生成集合的幂集
- RCNN学习笔记(8):Fully Convolutional Networks for Semantic Segmentation(全卷积网络FCN)
- 我的cocos2dx游戏
- php分页功能简记
- Spring Data Jpa 查询返回自定义对象
- Flask-更改国内CDN
- RCNN学习笔记(5):faster rcnn
- JS跨域调用之document.domain--相同基础域名页面之间的调用
- postmain 导致浏览器两次请求
- Web工程师必备的43款可视化工具
- SVN的使用
- Android Studio advanced configuration
- WCF Routing 服务
- web day17 JDBC入门,DAO模式mySQL时间类型转换,批处理
- Javascript的replace函数以及PHP中的str_replace()函数