Zadanie
Przedrostek, append-Sequence jest definiowany rekurencyjnie, w ten sposób
- a (1) = 1
- a (n) = a (n-1) .n, jeśli n jest parzyste
- a (n) = na (n-1), jeśli n jest nieparzyste
gdzie . reprezentuje konkatenację liczb całkowitych.
Tak więc kilka pierwszych terminów to: 1,12,312,3124,53124,531246,7531246,...
To jest A053064 .
Twoim zadaniem jest, biorąc pod uwagę liczbę całkowitą a> 0, aby zwrócić n , tak aby n- ty element w przedrostku, append-Sequence był równy a, a jeśli nie istnieje n , zwróć 0, ujemna liczba lub błąd itp.
Zasady
- Dane wejściowe można traktować jako liczbę całkowitą, ciąg, listę znaków / cyfr itp.
- Dane wyjściowe można wydrukować do STDOUT lub zwrócić (liczba całkowita, łańcuch itp. Jest w porządku)
- W przypadku niepoprawnego wejścia iw przypadku, gdy takie n nie istnieje, program może zrobić cokolwiek innego niż zwrócić dodatnią liczbę całkowitą (np. Zapętlić na zawsze, zwrócić 0 itd.)
- Możesz zdecydować się na użycie indeksowania 0, ale wtedy wyjście w przypadku, gdy nie istnieje n , nie może wynosić 0
Przypadki testowe
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
in*(int(log(n))+1)+a(n-1)
?