Lecture dans une base quelconque

Vous désirez créer un programme qui permet d'écrire sous le format classique (en base 10) un entier fourni dans une base quelconque. Votre programme doit lire un entier baseDépart, la base de départ, puis un entier nbChiffres, le nombre de chiffres de l'entier à lire en base baseDépart. Votre programme doit ensuite lire sur la ligne suivante nbChiffres entiers correspondant à l'écriture en base baseDépart de l'entier à convertir. Il doit alors afficher cet entier sous le format classique.

Contraintes

On garantit que l'entier à convertir est plus petit que 100 000 000.

Exemple

entrée :

12 2
3 11

sortie :

47

Solution

def lire_base(base: int, chiffres: list) -> int:
    """Renvoie la valeur du nombre, avec ses 'chiffres' donnés en 'base'.

    >>> lire_base(12, [3, 11])
    47
    
    """
    résultat = 0
    for chiffre in chiffres:
        résultat *= base
        résultat += chiffre
    return résultat

base, nb_chiffres = map(int, input().split())
chiffres = map(int, input().split())

print(lire_base(base, chiffres))

Commentaires

def lire_base(base: int, chiffres: list) -> int:
    if chiffres == []:
        return 0
    else:
        return chiffres[-1] + base * lire_base(base, chiffres[:-1])

base, nb_chiffres = map(int, input().split())
chiffres = list(map(int, input().split()))

print(lire_base(base, chiffres))