2672 - Primul bit: Difference between revisions

From Bitnami MediaWiki
No edit summary
Line 25: Line 25:
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def validare(n):
def validare(n):
     return n.isdigit() and 0 <= int(n) <= 63
     return n.isdigit()  




def primulbit(n):
def primulbit(n):
     # initializam variabila bit cu valoarea 0
     # initializam variabila bit cu valoarea 0
     bit = 0
     bit = 0
Line 38: Line 37:
         bit += 1
         bit += 1


  # afisam valoarea variabilei bit
    # afisam valoarea variabilei bit
     print(bit)
     print(bit)




if __name__ == "__main__":
if __name__ == "__main__":
     n = int(input())  # citim numarul
     n = input()  # citim numarul
 
    if validare(n):
 
        n = int(n)
if validare(n):
    n = int(n)


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


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


</syntaxhighlight>
</syntaxhighlight>

Revision as of 16:13, 22 April 2023

Cerință

În reprezentarea în baza 2 a unui număr natural:

  • primul bit (cel mai din stânga) este cel mai semnificativ, ultimul bit este cel mai puțin semnifica-tiv;
  • biții se numerotează de la dreapta la stânga, începând de la 0.

Se citește numărul n. Să se determine numărul de ordine al celui mai semnificativ bit.

Date de intrare

Programul citește de la tastatură numărul n într-o variabilă de tip întreg pe 64 de biți fără semn.

Date de ieșire

Programul va afișa pe ecran poziția primului bit a lui n de la stânga la dreapta

Restricții de precizări

  • valoarea lui n se poate reprezenta pe 64 de biți, fără semn;

Exemplul 1

Intrare
5
Ieșire
Datele introduse corespund restricțiilor impuse.
2

Exemplul 2

Intrare
23
Ieșire
Datele introduse corespund restricțiilor impuse.
4

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare(n):

   return n.isdigit() 


def primulbit(n):

   # initializam variabila bit cu valoarea 0
   bit = 0
   # cat timp numarul este mai mare decat 1, il impartim la 2 si incrementam variabila bit cu 1
   while n > 1:
       n //= 2
       bit += 1
   # afisam valoarea variabilei bit
   print(bit)


if __name__ == "__main__":

   n = input()  # citim numarul
   if validare(n):
       n = int(n)
       print("Datele introduse corespund restricțiilor impuse.")
       primulbit(n)
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")

</syntaxhighlight>