Leetcode_258_AddDigits

Add Digits

 

Discription:

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 = 111 + 1 = 2. Since 2 has only one digit, return it.

Follow up:
  Could you do it without any loop/recursion in O(1) runtime?

Solution:

1 class Solution {
2 public:
3     int addDigits(int num) {
4         return 1+(num-1)%9;
5     }
6 };

 

Hints:

 digital root: https://en.wikipedia.org/wiki/Digital_root

 vedic square: https://en.wikipedia.org/wiki/Vedic_square

 use the formular as follows:

       dr(n)=n-9\left\lfloor\frac{n-1}{9}\right\rfloor.

 

posted on 2015-10-22 12:38  nmj_93  阅读(93)  评论(0)    收藏  举报

导航