Digitwise_addition: превышение лимита: если превышено -> тайм-аут кодаPython

Программы на Python
Anonymous
Digitwise_addition: превышение лимита: если превышено -> тайм-аут кода

Сообщение Anonymous »

Я работаю над ката.
Поцифровое сложение — это особый вид сложения, при котором вместо обычного добавления 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

проблема: все расчеты проходит, но когда K большое, просит превысить лимит, а если превышено, говорит: тайм-аут кода

Подробнее здесь: https://stackoverflow.com/questions/788 ... e-time-out

Вернуться в «Python»