# https://leetcode.com/problems/add-to-array-form-of-integer/description/
"""
The 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 <= 104
0 <= num[i] <= 9
num does not contain any leading zeros except for the zero itself.
1 <= k <= 104
"""
from collections import deque


def add_to_array_form(num: list[int], k: int) -> list[int]:
    k_list = [int(c) for c in str(k)]
    carry = 0
    ans = deque()
    while num or k_list or carry:
        if num:
            carry += num.pop()
        if k_list:
            carry += k_list.pop()
        carry, val = divmod(carry, 10)
        ans.appendleft(val)
    return list(ans)
