2624 - Inv Bits: Difference between revisions
Vardai Erwin (talk | contribs) |
No edit summary |
||
Line 33: | 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 44: | 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) | ||
print("Numarul m este:", m) # afisam numarul calculat | print("Numarul m este:", m) # afisam numarul calculat | ||
Line 50: | Line 50: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
n = | 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> | </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>