###### 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;
}
};
```