Tâche
Le préfixe, la séquence append est défini de manière récursive, comme ceci
- a (1) = 1
- a (n) = a (n-1) .n, si n est pair
- a (n) = na (n-1), si n est impair
où le . représente une concaténation entière.
Les premiers termes sont donc les suivants: 1,12,312,3124,53124,531246,7531246,...
Il s'agit du A053064 .
Votre tâche est, étant donné un entier a> 0 pour revenir n , tel que le n ième élément dans le précédez, append-séquence est égal à un et si aucun n existe return 0, un numéro de négatif ou d'une erreur sur etc.
Règles
- L'entrée peut être prise comme un entier, une chaîne, une liste de caractères / chiffres, etc.
- La sortie peut être imprimée sur STDOUT ou renvoyée (entier, chaîne, etc. est très bien)
- Sur une entrée invalide et dans le cas où un tel n n'existe pas, votre programme peut faire autre chose que retourner un entier positif (par exemple, boucle pour toujours, retourne 0, etc.)
- Vous pouvez choisir d'utiliser l'indexation 0, mais la sortie dans le cas où aucun n n'existe ne peut pas être 0
Cas de test
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
etn*(int(log(n))+1)+a(n-1)
?