2577 - Get Bit: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: <nowiki>== Cerință ==</nowiki> Se dau mai multe perechi de forma număr, bit. Afișați pentru fiecare pereche valoarea bitului corespunzător din reprezentarea internă pe <code>64</code> de biți a numărului dat. <nowiki>== Date de intrare ==</nowiki> Programul citește de la tastatură numărul <code>T</code>, iar apoi <code>T</code> linii care conțin, fiecare, câte două numere separate prin spațiu <code>n</code> și <code>b</code> cu semnificația că se cere va...
 
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<nowiki>== Cerință ==</nowiki>
== Cerință ==
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 ==
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 ==
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."


Se dau mai multe perechi de forma număr, bit. Afișați pentru fiecare pereche valoarea bitului corespunzător din reprezentarea internă pe <code>64</code> de biți a numărului dat.
== Restricții de precizări ==
*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==
; Intrare
: 2
: 6 0
: 5 2
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: 0 1
== Exemplul 2 ==
; Intrare
: 3
: 7 1
: 15 2
: 21 0
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: 1 1 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)


<nowiki>== Date de intrare ==</nowiki>


Programul citește de la tastatură numărul <code>T</code>, iar apoi <code>T</code> linii care conțin, fiecare, câte două numere separate prin spațiu <code>n</code> și <code>b</code> cu semnificația că se cere valoarea bitului de pe poziția <code>b</code> din reprezentarea internă a numărului <code>n</code>.
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=" ")


<nowiki>== Date de ieșire ==</nowiki>


Programul va afișa pe ecran, pe prima linie, neseparate prin spațiu, cele <code>T</code> valori, determinate, în ordinea dată.
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]))


<nowiki>== Restricții de precizări ==</nowiki>
    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.")


<nowiki>*</nowiki>numerele n sunt memorate cu tipul de date pe 64 de biți, cu semn
</syntaxhighlight>
 
<nowiki>*</nowiki>numărul b este natural, cuprins între 0 și 63, inclusiv
 
<nowiki>== Exemplul 1==</nowiki>
 
<nowiki>;</nowiki> Intrare
 
<nowiki>:</nowiki> 2
 
<nowiki>:</nowiki> 6 0
 
<nowiki>:</nowiki> 5 2
 
<nowiki>;</nowiki> Ieșire
 
<nowiki>:</nowiki> Datele introduse corespund restricțiilor impuse.
 
<nowiki>:</nowiki> 0 1
 
<nowiki>== Exemplul 2 ==</nowiki>
 
<nowiki>;</nowiki> Intrare
 
<nowiki>:</nowiki> 3
 
<nowiki>:</nowiki> 7 1
 
<nowiki>:</nowiki> 15 2
 
<nowiki>:</nowiki> 21 0
 
<nowiki>;</nowiki> Ieșire
 
<nowiki>:</nowiki> Datele introduse corespund restricțiilor impuse.
 
<nowiki>:</nowiki> 1 1 1
 
<nowiki>== Rezolvare ver. 1 ==</nowiki>

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>