2624 - Inv Bits

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ță

Dat fiind un număr natural n, să se determine numărul natural m care are are proprietatea că are în reprezentarea în baza 2 biți de 1 pe pozițiile unde n are biți de 0 și are biți de 0 pe pozițiile unde n are biți de 1. De exemplu, dacă n = 346, atunci m = 165, deoarece n se reprezintă în baza 2 prin 101011010, iar m prin 010100101.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa pe ecran numărul m. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări

  • 0 ⩽ n ⩽ 10000

Exemplul 1

Intrare
346
Ieșire
Datele introduse corespund restricțiilor impuse.
165

Exemplul 2

Intrare
255
Ieșire
Datele introduse corespund restricțiilor impuse.
0

Rezolvare ver. 1

def validare(n):
    """Funcție pentru validarea unui număr n."""
    return n.isdigit() and 0 <= int(n) <= 10000


def transform(n):
    """Funcție pentru transformarea unui număr n în forma sa complementară în baza 2."""
    binary_n = bin(n)[2:]  # convertim numarul n in reprezentarea sa in baza 2 (binara)
    binary_list = list(binary_n)  # transformam sirul binar intr-o lista de caractere

    inverted_list = ["1" if x == "0" else "0" for x in binary_list] # initializam un nou sir de caractere cu caracterele opuse
    inverted_binary_n = "".join(inverted_list)  # convertim noul sir de caractere intr-un numar intreg
    m = int(inverted_binary_n, 2)
    
    print("Numarul m este:", m) # afisam numarul calculat


if __name__ == "__main__":
    n = input("Introduceți numărul n: ")  # citim n de la tastatură

    if validare(n):
        n = int(n)

        print("Datele introduse corespund restricțiilor impuse.")
        transform(n)

    else:
        print("Datele introduse nu corespund restricțiilor impuse.")