задача
Prepend, append-Sequence определяется рекурсивно, как это
- а (1) = 1
- a (n) = a (n-1) .n, если n четное
- a (n) = na (n-1), если n нечетно
где . представляет целочисленную конкатенацию.
Итак, первые несколько терминов: 1,12,312,3124,53124,531246,7531246,...
это A053064 .
Ваша задача, учитывая целое число a> 0, чтобы вернуть n , так, чтобы n- й элемент в prepend, append-Sequence был равен a, и если такого n не существует, вернуть 0, отрицательное число или ошибку и т. Д.
правила
- Входные данные могут быть приняты как целое число, строка, список символов / цифр и т. Д.
- Вывод может быть напечатан в STDOUT или возвращен (целое число, строка и т. Д. В порядке)
- При неверном вводе и в случае, если такого n не существует, ваша программа может делать что угодно, но возвращать положительное целое число (например, цикл навсегда, возврат 0 и т. Д.)
- Вы можете использовать 0-индексирование, но тогда вывод, если n не существует, не может быть 0
Контрольные примеры
1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100
a(n-1)*(int(log(n))+1)+n
аn*(int(log(n))+1)+a(n-1)
?