2579 - Putere 2 Interval: Difference between revisions
Cuceu Andrei (talk | contribs) Pagină nouă: ==Cerință== Se citesc 3 numere naturale '''n''', '''a''' și '''b'''. Afișați primele '''n''' puteri ale lui '''2''', în ordine crescătoare, din intervalul '''[a,b]'''. Dacă nu există cel puțin n puteri ale lui '''2''' în interval, atunci se vor afișa cele care există. ==Date de intrare== Programul citește de la tastatură numărul '''n''', '''a''' și '''b''', separate prin spații. ==Date de ieșire== Programul va afișa pe ecran puterile lui '''2''' d... |
Vardai Erwin (talk | contribs) |
||
Line 12: | Line 12: | ||
==Date de ieșire== | ==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 puterile lui '''2''' din intervalul '''[a,b]'''. | Programul va afișa pe ecran puterile lui '''2''' din intervalul '''[a,b]'''. | ||
În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse." | |||
==Restricții și precizări== | ==Restricții și precizări== |
Revision as of 19:16, 7 May 2023
Cerință
Se citesc 3 numere naturale n, a și b. Afișați primele n puteri ale lui 2, în ordine crescătoare, din intervalul [a,b]. Dacă nu există cel puțin n puteri ale lui 2 în interval, atunci se vor afișa cele care există.
Date de intrare
Programul citește de la tastatură numărul n, a și b, separate prin spații.
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 puterile lui 2 din intervalul [a,b]. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări
- 1 ≤ n ≤ 60
- 1 ≤ a ≤ b < 2^64
Exemplul 1
- Intrare
2 6 35
- Ieșire
8 16
Explicatie
În interval există 3 puteri ale lui 2, dar s-au afișat doar n dintre ele.
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line="1" start="1">
def validate_input(n: int, a: int, b: int) -> bool:
if not (1 <= n <= 60): print("Numărul n trebuie să fie între 1 și 60.") return False if not (1 <= a <= b < 2**64): print("Numerele a și b trebuie să fie între 1 și 2^64 - 1, și a trebuie să fie mai mic sau egal cu b.") return False return True
def main():
n, a, b = map(int, input().split()) if not validate_input(n, a, b): return powers_of_2 = [] for i in range(64): power_of_2 = 2**i if a <= power_of_2 <= b: powers_of_2.append(power_of_2) powers_of_2.sort() for i in range(min(n, len(powers_of_2))): print(powers_of_2[i], end=' ')
if __name__ == '__main__':
main()
</syntaxhighlight>
Explicatie
Explicatie
Funcția validate_input este folosită pentru a valida inputul citit de la tastatură. Aceasta verifică dacă valorile citite pentru n, a, și b respectă restricțiile date. Dacă inputul nu este valid, se va afișa un mesaj de eroare și funcția va returna False. Altfel, funcția va returna True.
În funcția main, citim inputul de la tastatură folosind input() și îl procesăm folosind funcția map() și split() pentru a separa valorile citite. Apoi, verificăm dacă inputul este valid folosind funcția validate_input. Dacă inputul nu este valid, funcția se va încheia.
În continuare, parcurgem toate puterile lui 2 din intervalul [a, b], și le stocăm în lista powers_of_2. După ce am stocat toate puterile lui 2 din interval, sortăm lista și afișăm primele n elemente folosind un for loop.