2577 - Get Bit: Difference between revisions
No edit summary |
Vardai Erwin (talk | contribs) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
Se dau mai multe perechi de forma număr, bit. Afișați pentru fiecare pereche valoarea bitului corespunzător din reprezentarea internă pe 64 de biți a numărului dat. | Se dau mai multe perechi de forma număr, bit. Afișați pentru fiecare pereche valoarea bitului corespunzător din reprezentarea internă pe 64 de biți a numărului dat. | ||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură numărul T, iar apoi T linii care conțin, fiecare, câte două numere separate prin spațiu n și b cu semnificația că se cere valoarea bitului de pe poziția b din reprezentarea internă a numărului n. | Programul citește de la tastatură numărul '''T''', iar apoi T linii care conțin, fiecare, câte două numere separate prin spațiu '''n''' și '''b''' cu semnificația că se cere valoarea bitului de pe poziția '''b''' din reprezentarea internă a numărului '''n.''' | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul va afișa pe ecran | Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa pe ecran, neseparate prin spațiu, cele '''T''' valori, determinate, în ordinea dată. Î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 == | ||
*numerele n sunt memorate cu tipul de date pe 64 de biți, cu semn | *numerele n sunt memorate cu tipul de date pe 64 de biți, cu semn | ||
Line 26: | Line 27: | ||
: 1 1 1 | : 1 1 1 | ||
== Rezolvare ver. 1 == | == Rezolvare ver. 1 == | ||
<syntaxhighlight lang="python" line="1" start="1"> | |||
def validare(T, n, b): | |||
# Funcție de validare a datelor de intrare | |||
# Verificăm dacă T este între 0 și 1000, iar n și b conțin numere între 0 și 2^63 - 1 și respectiv 0 și 63 | |||
return 0 <= int(T) <= 1000 and all(0 <= int(num) <= 2 ** 63 - 1 for num in n) and all( | |||
0 <= int(bit) <= 63 for bit in b) | |||
def getbit(T, n, b): | |||
# Funcție pentru a obține valoarea bitului corespunzător din reprezentarea internă a numărului | |||
for i in range(T): | |||
bit_val = (n[i] & (1 << b[i])) >> b[i] | |||
print(bit_val, end=" ") | |||
if __name__ == "__main__": | |||
# Funcția principală a programului | |||
T = input("Introduceți numărul de perechi de număr, bit: ") | |||
n = [] | |||
b = [] | |||
for i in range(int(T)): | |||
# Citirea datelor de intrare și adăugarea lor în liste separate pentru n și b | |||
pair = input("Introduceți valorile n și b separate prin spațiu pentru perechea {}: ".format(i + 1)).split() | |||
n.append(int(pair[0])) | |||
b.append(int(pair[1])) | |||
if validare(T, n, b): | |||
# Verificăm dacă datele de intrare corespund restricțiilor impuse | |||
print("Datele introduse corespund restricțiilor impuse.") | |||
getbit(int(T), n, b) | |||
else: | |||
print("Datele introduse nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> |
Latest revision as of 11:43, 30 April 2023
Cerință[edit | edit source]
Se dau mai multe perechi de forma număr, bit. Afișați pentru fiecare pereche valoarea bitului corespunzător din reprezentarea internă pe 64 de biți a numărului dat.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul T, iar apoi T linii care conțin, fiecare, câte două numere separate prin spațiu n și b cu semnificația că se cere valoarea bitului de pe poziția b din reprezentarea internă a numărului 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, neseparate prin spațiu, cele T valori, determinate, în ordinea dată. Î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]
- numerele n sunt memorate cu tipul de date pe 64 de biți, cu semn
- numărul b este natural, cuprins între 0 și 63, inclusiv
Exemplul 1[edit | edit source]
- Intrare
- 2
- 6 0
- 5 2
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 0 1
Exemplul 2[edit | edit source]
- Intrare
- 3
- 7 1
- 15 2
- 21 0
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1 1 1
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def validare(T, n, b):
# Funcție de validare a datelor de intrare # Verificăm dacă T este între 0 și 1000, iar n și b conțin numere între 0 și 2^63 - 1 și respectiv 0 și 63 return 0 <= int(T) <= 1000 and all(0 <= int(num) <= 2 ** 63 - 1 for num in n) and all( 0 <= int(bit) <= 63 for bit in b)
def getbit(T, n, b):
# Funcție pentru a obține valoarea bitului corespunzător din reprezentarea internă a numărului for i in range(T): bit_val = (n[i] & (1 << b[i])) >> b[i] print(bit_val, end=" ")
if __name__ == "__main__":
# Funcția principală a programului T = input("Introduceți numărul de perechi de număr, bit: ") n = [] b = [] for i in range(int(T)): # Citirea datelor de intrare și adăugarea lor în liste separate pentru n și b pair = input("Introduceți valorile n și b separate prin spațiu pentru perechea {}: ".format(i + 1)).split() n.append(int(pair[0])) b.append(int(pair[1]))
if validare(T, n, b): # Verificăm dacă datele de intrare corespund restricțiilor impuse print("Datele introduse corespund restricțiilor impuse.") getbit(int(T), n, b) else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>