---
# System prepended metadata

title: 258. Add Digits
tags: [math, Leetcode, python, c++, easy]

---

###### tags: `Leetcode` `easy` `math` `python` `c++`

# 258. Add Digits

## [題目連結:] https://leetcode.com/problems/add-digits/

## 題目:
Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.

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

**Example 1:**
```
Input: num = 38
Output: 2
Explanation: The process is
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2 
Since 2 has only one digit, return it.
```
**Example 2:**
```
Input: num = 0
Output: 0
```

## 解題想法:
follow up:數學解 .......還未理解
可參考大神 [LeetCode 258 Add Digits (Python)]https://maxming0.github.io/2020/07/26/Add-Digits/

## Python: 一般loop解
``` python=
class Solution(object):
    def addDigits(self, num):
        """
        :type num: int
        :rtype: int
        """
        while num>9:
            cur=0
            while num:
                cur+=num%10
                num//=10
            num=cur
        return num
    
if __name__ == '__main__':
    result = Solution()
    ans=result.addDigits(num = 38)
    print(ans)
```

## C++: 一般loop解
``` cpp=
#include<iostream>
using namespace std;

class Solution {
public:
    int addDigits(int num) {
        while (num>9){
            int cur=0;
            while (num){
                cur+=num%10;
                num/=10;
            }
            num=cur;
        }
        return num;
    }
};

int main(){
    Solution res;
    int nums=38;
    int ans=res.addDigits(nums);
    cout<<ans<<endl;
    return 0;
}
```