2699 - Puterile Lui N: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
No edit summary
Paul Ungur (talk | contribs)
No edit summary
Line 57: Line 57:
         print("Date de intrare invalide")
         print("Date de intrare invalide")
</syntaxhighlight>
</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.

Revision as of 15:34, 15 May 2023

Date de intrare

Programul citește de la tastatură numerele n, și p, separate prin spații.

Date de ieșire

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.

Restricții și precizări 2 ≤ n ≤ 10 1 ≤ p ≤ 1.000.000.000.000

Exemplu: Intrare

4 120 Ieșire

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.