3957 - Countercase: Difference between revisions
Vardai Erwin (talk | contribs) |
No edit summary |
||
Line 19: | Line 19: | ||
=== Rezolvare ver. 1 === | === Rezolvare ver. 1 === | ||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def validare(n): | def validare(n): | ||
# Funcție pentru validarea numărului de intrare | |||
# Returnează True dacă numărul este valid, False în caz contrar | |||
return n.isdigit() and int(n) <= 500 | return n.isdigit() and int(n) <= 500 | ||
def counterase(n): | def counterase(n): | ||
# Funcție pentru calcularea numărului de numere posibile | |||
numar_posibil = 0 | numar_posibil = 0 | ||
for x in range(n + 1): | for x in range(n + 1): | ||
if x & n == x: | if x & n == x: | ||
# Verificare dacă x & n == x, adică x reprezintă un submulțime a lui n în reprezentarea binară | |||
numar_posibil += 1 | numar_posibil += 1 | ||
Line 35: | Line 38: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = input("Introduceti numarul n: ") | n = input("Introduceti numarul n: ") # Citirea numărului de la tastatură | ||
if validare(n): | if validare(n): # Verificare validitate numărului utilizând funcția validare() | ||
n = int(n) | n = int(n) # Convertirea valorii numărului la tipul int | ||
print("Datele introduse corespund restricțiilor impuse.") | print("Datele introduse corespund restricțiilor impuse.") | ||
counterase(n) | counterase(n) # Apelarea funcției counterase() pentru calcularea numărului de numere posibile | ||
else: | else: | ||
print("Datele introduse nu corespund restricțiilor impuse.") | print("Datele introduse nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 08:54, 25 April 2023
Cerință
Dându-se un număr natural n să se afle câte numere se pot obține folosind biții acestuia.Un număr natural x se obține folosind biții lui n dacă mulțimea biților setați ai lui x este inclusă în mulțimea biților setați ai lui n. De exemplu, pentru n = 5 reprezentarea binară este 101; x poate lua valorile 101, 100, 001, 000, adică 5, 4, 1, 0.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa pe ecran valoarea cerută. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții de precizări
- n are cel mult 500 de cifre
Exemplu
Exemplul 1
- Intrare
- 5
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 4
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line="1" start="1"> def validare(n):
# Funcție pentru validarea numărului de intrare # Returnează True dacă numărul este valid, False în caz contrar return n.isdigit() and int(n) <= 500
def counterase(n):
# Funcție pentru calcularea numărului de numere posibile numar_posibil = 0
for x in range(n + 1): if x & n == x: # Verificare dacă x & n == x, adică x reprezintă un submulțime a lui n în reprezentarea binară numar_posibil += 1
print("Numarul de numere posibile este:", numar_posibil)
if __name__ == '__main__':
n = input("Introduceti numarul n: ") # Citirea numărului de la tastatură if validare(n): # Verificare validitate numărului utilizând funcția validare() n = int(n) # Convertirea valorii numărului la tipul int print("Datele introduse corespund restricțiilor impuse.") counterase(n) # Apelarea funcției counterase() pentru calcularea numărului de numere posibile else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>