2699 - Puterile Lui N: Difference between revisions
Paul Ungur (talk | contribs) Creat o pagină goală |
Paul Ungur (talk | contribs) No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
==Date de intrare== | |||
Programul citește de la tastatură numerele <span style="color: red;">n</span>, și <span style="color: red;">p</span>, separate prin spații. | |||
==Date de ieșire== | |||
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi programul va afișa pe ecran în ordine crescătoare, toate puterile lui <span style="color: red;">n</span> mai mici sau egale cu <span style="color: red;">p</span>, separate prin exact un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".''' | |||
== Restricții și precizări == | |||
<span style="color: red;">2 ≤ n ≤ 10 | |||
1 ≤ p ≤ 1.000.000.000.000</span> | |||
== Exemplu: == | |||
Intrare | |||
: 4 120 | |||
Ieșire | |||
: Date de intrare valide | |||
: 1 4 16 64 | |||
==Rezolvare== | |||
<syntaxhighlight lang="python" line="1"> | |||
def validare_date(n: int, p: int) -> bool: | |||
""" | |||
Functia de validare pentru input. | |||
Verifica daca n este intre 2 si 10 si daca p este intre 1 si 1.000.000.000.000. | |||
""" | |||
if not (2 <= n <= 10): | |||
print("n trebuie sa fie intre 2 si 10.") | |||
return False | |||
if not (1 <= p <= 10**12): | |||
print("p trebuie sa fie intre 1 si 1.000.000.000.000.") | |||
return False | |||
return True | |||
def puterea_lui_n(n: int, p: int): | |||
""" | |||
Functia de rezolvare pentru exercitiul dat. | |||
Returneaza un string cu toate puterile lui n mai mici sau egale cu p, separate prin exact un spatiu. | |||
""" | |||
puteri = [] | |||
i = 0 | |||
while n ** i <= p: | |||
puteri.append(n ** i) | |||
i += 1 | |||
print(' '.join(map(str, puteri))) | |||
if __name__ == '__main__': | |||
""" | |||
Functia if __name__ care citeste datele de intrare, verifica validitatea lor si afiseaza rezultatul. | |||
""" | |||
n, p = map(int, input().split()) | |||
if validare_date(n, p): | |||
print("Date de intrare valide") | |||
puterea_lui_n(n, p) | |||
else: | |||
print("Date de intrare invalide") | |||
</syntaxhighlight> | |||
==Explicatie cod:== | |||
Funcția validare_date(n, p) verifică dacă valorile n și p sunt valide pentru a rezolva problema dată. Verifică dacă n este între 2 și 10, iar p este între 1 și 1.000.000.000.000. Dacă nu se îndeplinesc aceste condiții, returnează False. Altfel, returnează True. | |||
Funcția puterea_lui_n(n, p) rezolvă problema dată. Utilizează o buclă while pentru a genera puterile lui n mai mici sau egale cu p. Adaugă fiecare putere la lista puteri și crește exponentul i cu 1 la fiecare iterație. La final, afișează elementele listei puteri, separate printr-un singur spațiu, utilizând funcția join() și funcția print(). | |||
În blocul if __name__ == '__main__':, se citește input-ul de la utilizator utilizând funcția input(). Valorile citite sunt convertite în numere întregi utilizând funcția map(int, input().split()). Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, p). Dacă nu sunt valide, se afișează mesajul "Date de intrare invalide". Dacă valorile introduse sunt valide, se apelează funcția puterea_lui_n(n, p) pentru a rezolva problema și a afișa rezultatul. |
Latest revision as of 18:24, 29 June 2023
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n, și p, separate prin spații.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul va afișa pe ecran în ordine crescătoare, toate puterile lui n mai mici sau egale cu p, separate prin exact un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".
Restricții și precizări[edit | edit source]
2 ≤ n ≤ 10 1 ≤ p ≤ 1.000.000.000.000
Exemplu:[edit | edit source]
Intrare
- 4 120
Ieșire
- Date de intrare valide
- 1 4 16 64
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1"> def validare_date(n: int, p: int) -> bool:
""" Functia de validare pentru input. Verifica daca n este intre 2 si 10 si daca p este intre 1 si 1.000.000.000.000. """ if not (2 <= n <= 10): print("n trebuie sa fie intre 2 si 10.") return False if not (1 <= p <= 10**12): print("p trebuie sa fie intre 1 si 1.000.000.000.000.") return False return True
def puterea_lui_n(n: int, p: int):
""" Functia de rezolvare pentru exercitiul dat. Returneaza un string cu toate puterile lui n mai mici sau egale cu p, separate prin exact un spatiu. """ puteri = [] i = 0 while n ** i <= p: puteri.append(n ** i) i += 1 print(' '.join(map(str, puteri)))
if __name__ == '__main__':
""" Functia if __name__ care citeste datele de intrare, verifica validitatea lor si afiseaza rezultatul. """ n, p = map(int, input().split()) if validare_date(n, p): print("Date de intrare valide") puterea_lui_n(n, p) else: print("Date de intrare invalide")
</syntaxhighlight>
Explicatie cod:[edit | edit source]
Funcția validare_date(n, p) verifică dacă valorile n și p sunt valide pentru a rezolva problema dată. Verifică dacă n este între 2 și 10, iar p este între 1 și 1.000.000.000.000. Dacă nu se îndeplinesc aceste condiții, returnează False. Altfel, returnează True. Funcția puterea_lui_n(n, p) rezolvă problema dată. Utilizează o buclă while pentru a genera puterile lui n mai mici sau egale cu p. Adaugă fiecare putere la lista puteri și crește exponentul i cu 1 la fiecare iterație. La final, afișează elementele listei puteri, separate printr-un singur spațiu, utilizând funcția join() și funcția print(). În blocul if __name__ == '__main__':, se citește input-ul de la utilizator utilizând funcția input(). Valorile citite sunt convertite în numere întregi utilizând funcția map(int, input().split()). Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, p). Dacă nu sunt valide, se afișează mesajul "Date de intrare invalide". Dacă valorile introduse sunt valide, se apelează funcția puterea_lui_n(n, p) pentru a rezolva problema și a afișa rezultatul.