2672 - Primul bit: Difference between revisions

From Bitnami MediaWiki
No edit summary
Tag: visualeditor
 
(One intermediate revision by the same user not shown)
Line 7: Line 7:
Programul citește de la tastatură numărul '''n''' într-o variabilă de tip întreg pe 64 de biți fără semn.
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 ==
== Date de ieșire ==
Programul va afișa pe ecran poziția primului bit a lui '''n''' de la stânga la dreapta
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa pe ecran poziția primului bit a lui '''n''' de la stânga la dreapta. Î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 ==
*valoarea lui '''n''' se poate reprezenta pe 64 de biți, fără semn;
*valoarea lui '''n''' se poate reprezenta pe 64 de biți, fără semn;
Line 25: Line 26:
<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 38:
         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>

Latest revision as of 19:58, 24 April 2023

Cerință[edit]

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

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

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa pe ecran poziția primului bit a lui n de la stânga la dreapta. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări[edit]

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

Exemplul 1[edit]

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

Exemplul 2[edit]

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

Rezolvare ver. 1[edit]

<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>