2624 - Inv Bits: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==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== Programu...
 
No edit summary
 
(One intermediate revision by one other user not shown)
Line 5: Line 5:
Programul citește de la tastatură numărul '''n'''.
Programul citește de la tastatură numărul '''n'''.
==Date de ieșire==
==Date de ieșire==
Programul va afișa pe ecran numărul '''m'''.
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==
==Restricții de precizări==
*0 ⩽ '''n''' ⩽ 10000
*0 ⩽ '''n''' ⩽ 10000
Line 32: Line 33:
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def validare(n):
def validare(n):
    """Funcție pentru validarea unui număr n."""
     return n.isdigit() and 0 <= int(n) <= 10000
     return n.isdigit() and 0 <= int(n) <= 10000




def transform(n):
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_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
     binary_list = list(binary_n)  # transformam sirul binar intr-o lista de caractere
Line 43: Line 45:
     inverted_binary_n = "".join(inverted_list)  # convertim noul sir de caractere intr-un numar intreg
     inverted_binary_n = "".join(inverted_list)  # convertim noul sir de caractere intr-un numar intreg
     m = int(inverted_binary_n, 2)
     m = int(inverted_binary_n, 2)
    m = transform(n)
      
      
     print("Numarul m este:", m) # afisam numarul calculat
     print("Numarul m este:", m) # afisam numarul calculat
Line 49: Line 50:


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


     print("Datele introduse corespund restricțiilor impuse.")
     if validare(n):
    transform(n)
        n = int(n)


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


    else:
        print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 08:15, 25 April 2023

Cerință[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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[edit | edit source]

  • 0 ⩽ n ⩽ 10000

Exemplul 1[edit | edit source]

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

Exemplul 2[edit | edit source]

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

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line="1" start="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.")

</syntaxhighlight>