0426 - Baza B

De la Universitas MediaWiki

Cerință

Se dă un număr natural numar și o bază de numerație baza. Să se determine cea mai mare cifră a reprezentării lui numar în baza baza.

Date de intrare

Programul citește de la tastatură două numere naturale numar, baza .

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran valoarea cerută. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări

  • 1 ⩽ numar  ⩽ 1.000.000.000
  • 2 ⩽ baza  ⩽ 10

Exemplu

Intrare
878
6
Ieșire
Datele introduse corespund restricțiilor impuse.
4

Rezolvare

Rezolvare ver. 1

def validare_date(numar, baza):
    # Funcție pentru validarea numerelor de intrare
    # Returnează True dacă numerele sunt valide, False în caz contrar
    return numar.isdigit() and 1 <= int(numar) <= 10000 and baza.isdigit() and 1 <= int(baza) <= 10


def max_cifra(numar, baza):
    # Funcție pentru calcularea și afișarea celei mai mari cifre într-un număr într-o anumită bază
    max_cifra = 0 # Variabila pentru stocarea celei mai mari cifre, inițializată cu 0

    while numar > 0: # Parcurgerea cifrelor numărului până când acesta devine 0
        cifra = numar % baza # Obținerea ultimei cifre a numărului în baza specificată
        if cifra > max_cifra: # Compararea cifrei curente cu cea mai mare cifră găsită până acum
            max_cifra = cifra # Dacă cifra curentă este mai mare, o înlocuim pe cea mai mare cifră
        numar //= baza # Eliminarea ultimei cifre din număr, trecând la următoarea cifră în bază

    print(max_cifra) # Afișarea celei mai mari cifre găsite


if __name__ == '__main__':
    numar = input("Introduceți numărul n: ") # Solicitare număr de la utilizator
    baza = input("Introduceți baza de numerație b: ") # Solicitare bază de numerație de la utilizator

    if validare_date(numar, baza): # Verificare validitate număr și bază utilizând funcția validare_date()
        numar, baza = int(numar), int(baza) # Convertirea valorilor număr și bază la tipul int
        print("Datele de intrare corespund restricțiilor impuse.")
        max_cifra(numar, baza) # Apelarea funcției max_cifra() pentru a calcula și afișa cea mai mare cifră
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")