# 258. Add Digits

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

Example:

Input: 38
Output: 2 
Explanation: 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?

# Solution

Approach 1: Loop.

Approach 2: O(1).

# Code (Python)

Approach 1:

Approach 2:

# Code (C++)

Approach 1:

class Solution {
public:
    int addDigits(int num) {
        int sum = 0;
        while (true)
        {
            sum += num % 10;
            num = num / 10;
            if (num <= 0)
            {
                if (sum < 10)
                    break;
                num = sum;
                sum = 0;
            }
        }
        return sum;
    }
};

Approach 2:

class Solution {
public:
    int addDigits(int num) {
        if (num == 0) return 0;
        if (num % 9 == 0) return 9;
        return num % 9;
    }
};

class Solution {
public:
    int addDigits(int num) {
        return 1 + ((num - 1) % 9);
    }
};