Поцифровое сложение — это особый вид сложения, при котором вместо обычного добавления 1 к числу добавляется 1 к каждой цифре этого числа. Если цифра 9, мы заменяем ее на 10 без переноса на следующую цифру.
Примеры
123 -> 234
Задача
Запрограммируйте функцию, которая принимает два числа, n и k, и выводит количество цифр в n после применения цифрового сложения k раз. Поскольку ответ может быть очень большим, верните ответ по модулю 1_000_000_007.
Ожидается, что ваше решение будет O(klogn).
Мое решение:
Код: Выделить всё
import sys
MOD = 10**9 + 7
sys.set_int_max_str_digits(0)
def d2a(digits):
arr= list(map(int,str(digits)))
return arr
def a2d(arr):
length=len(arr)
digit=""
for i in range(length):
digit+=str(arr[i])
return int(digit)
def add(n):
return n+1
def digitwise_addition(digit, K):
for i in range(K):
#CONVERTING INTO ARRAY
arr=d2a(digit)
#ADDING 1 INTO ALL NUMBERS FROM ARRAY
arr=list(map(add,arr))
#CONVERTING ARRAY INTO DIGIT
digit=a2d(arr)
arr=d2a(digit)
return len(arr) %MOD
Подробнее здесь: https://stackoverflow.com/questions/788 ... e-time-out