adds addend to digit array given in digits starting at index k
(digits, k, addend)
| 146 | |
| 147 | |
| 148 | def add(digits, k, addend): |
| 149 | """ |
| 150 | adds addend to digit array given in digits |
| 151 | starting at index k |
| 152 | """ |
| 153 | for j in range(k, len(digits)): |
| 154 | s = digits[j] + addend |
| 155 | if s >= 10: |
| 156 | quotient, digits[j] = divmod(s, 10) |
| 157 | addend = addend // 10 + quotient |
| 158 | else: |
| 159 | digits[j] = s |
| 160 | addend = addend // 10 |
| 161 | |
| 162 | if addend == 0: |
| 163 | break |
| 164 | |
| 165 | while addend > 0: |
| 166 | addend, digit = divmod(addend, 10) |
| 167 | digits.append(digit) |
| 168 | |
| 169 | |
| 170 | def solution(n: int = 10**15) -> int: |