---
# System prepended metadata

title: LeetCode 989.Add to Array-Form of Integer
tags: [Array, Math]

---

###### tags: `Array`, `Math`

# LeetCode 989.Add to Array-Form of Integer
he array-form of an integer ```num``` is an array representing its digits in left to right order.

- For example, for num = ```1321```, the array form is ```[1,3,2,1]```.

Given ```num```, the array-form of an integer, and an integer k, return the array-form of the integer ```num + k```.  
  
 

>Example 1:
```
Input: num = [1,2,0,0], k = 34
Output: [1,2,3,4]
Explanation: 1200 + 34 = 1234
```
>Example 2:
```
Input: num = [2,7,4], k = 181
Output: [4,5,5]
Explanation: 274 + 181 = 455
```
>Example 3:
```
Input: num = [2,1,5], k = 806
Output: [1,0,2,1]
Explanation: 215 + 806 = 1021
```
 

### Constraints:

- $1 <= num.length <= 10^4$
- $0 <= num[i] <= 9$
- ```num``` does not contain any leading zeros except for the zero itself.
- $1 <= k <= 10^4$
---
### Idea:
>num 加上 array 最後一個數字之後除以10，就會是 array 最後一個位子的數值，以此類推。如果最後 num 還有數值，就會把 num 值放到 array 的最前面。
### Solution:

Python:
```python=
class Solution:
  def addToArrayForm(self, num: List[int], k: int) -> List[int]:
    for i in reversed(range(len(num))):
      k, num[i] = divmod(num[i] + k, 10)

    while k > 0:
      num = [k % 10] + num
      k //= 10

    return num
```

C++:
```cpp=
class Solution 
{
 public:
  vector<int> addToArrayForm(vector<int>& num, int k) 
  {
    for (int i = num.size() - 1; i >= 0; --i) 
    {
      num[i] += k;
      k = num[i] / 10;
      num[i] %= 10;
    }
    while (k > 0) {
      num.insert(begin(num), k % 10);
      k /= 10;
    }
    return num;
  }
};
```