Bonjour,
Je bute sur un petit problème que je me suis posé et résume comme suit.
On considère les nombres dont l'écriture en base K est de longueur N (K<=N).
Si nécessaire, on tient compte des zéros pour assurer cette longueur N.
Exemples N=5, K=4
Des nombres possibles sont n1=00312, n2=11310, n3=22311
On définit comme « admissible » tout nombre de ce type dont l'écriture contient au moins une fois chaque chiffre de 0 à K-1.
Ainsi n1 est admissible, mais pas n2, ni n3.
Partant d'un nombre admissible, on ajoute 1 :
n1 => 00313
Si le nombre obtenu n'est pas admissible, on ajoute à nouveau 1 et on répète l'opération jusqu'à obtenir un nombre admissible :
00313 => 00320 => 00321
Dans cet exemple on a dû ajouter trois fois 1.
Appelons « saut », noté S(n,N,K), cette quantité (ici trois pour n=n1).
Par exemple S(00321,5,4)= 18
du fait de la séquence
00321 => 00322 => 00323 => 00330 => 00331 => 00332 => 00333
=> 01000 => 01001 => 01002 => 01003 => 01010 => 01011 => 01012
=> 01013 => 01020 => 01021 => 01022 => 01023
Il est facile d'écrire un petit code qui compte le nombre de fois qu'il faut ajouter 1 et, donc, les tailles des sauts.
Ainsi, en partant de n1, les vingt premiers sauts sont
3 18 3 13 3 5 4 4 1 1 1 1 3 4 2 1 1 1 3 9
Mais je cherche une formule qui donne directement le saut S(n,N,K) à partir de n.
Ou, présenté autrement, le nombre d'inadmissibles entre deux admissibles successifs.
Merci d'avance pour toute suggestion me permettant d'avancer.