0946 - Doua Baze

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerință

Se dă un număr n scris în baza 2. Să se afișeze valoarea acestuia în baza 4.

Date de intrare

Programul citește de la tastatură scrierea în baza 2 a numărului n.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa pe ecran scrierea în baza 4 a numărului n. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări

  • n are cel mult 100 de cifre în baza 2;

Exemplu

Exemplul 1

Intrare
100011
Ieșire
Datele introduse corespund restricțiilor impuse.
203

Exemplul 2

Intrare
11010110
Ieșire
Datele introduse corespund restricțiilor impuse.
3112

Rezolvare

Rezolvare ver. 1

def validare(n):
    # Funcție care validează dacă numărul introdus este un număr binar valid
    return n.isdigit() and 0 <= len(n) <= 100


def douabaze(n):
    # Funcție care convertește un număr din baza 2 în baza 4
    # Verificăm dacă lungimea numărului n este impară și, dacă da, adăugăm un 0 la început pentru a obține o lungime pară
    while len(n) % 2 != 0:
        n = '0' + n
    # Tabela de conversie din baza 2 în baza 4
    conversion_table = {'00': '0', '01': '1', '10': '2', '11': '3'}
    # Rezultatul final în baza 4
    result = ''
    # Parcurgem numărul n în grupuri de câte 2 caractere și le convertim folosind tabela de conversie
    for i in range(0, len(n), 2):
        result += conversion_table[n[i:i + 2]]
    return result


if __name__ == '__main__':
    n = input("Introduceți un număr în baza 2: ")
    if validare(n):
        print("Datele introduse corespund restricțiilor impuse.")
        # Apelăm funcția douabaze pentru a realiza conversia
        print("Numărul în baza 4 este:", douabaze(n))
    else:
        print("Datele introduse nu corespund restricțiilor impuse.")