258. Add Digits

来源:互联网 发布:黑巧克力 减肥 数据 编辑:程序博客网 时间:2024/05/19 07:43

原题

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?

代码实现

  public int AddDigits(int num) {        return num - 9*Convert.ToInt32((num-1)/9);    }

扩展

https://en.wikipedia.org/wiki/Digital_root#Congruence_formula
https://en.wikipedia.org/wiki/Vedic_square

It helps to see the digital root of a positive integer as the position it holds with respect to the largest multiple of 9 less than the number itself. For example, the digital root of 11 is 2, which means that 11 is the second number after 9. Likewise, the digital root of 2035 is 1, which means that 2035 − 1 is a multiple of 9. If a number produces a digital root of exactly 9, then the number is a multiple of 9. With this in mind the digital root of a positive integer {\displaystyle n} n may be defined by using floor function
这里写图片描述

leetcode-solution库

leetcode算法题目解决方案每天更新在github库中,欢迎感兴趣的朋友加入进来,也欢迎star,或pull request。https://github.com/jackzhenguo/leetcode-csharp