2699 - Puterile Lui N: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 3: Line 3:


==Date de ieșire==
==Date de ieșire==
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.
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
== Restricții și precizări ==
<span style="color: red;">2 ≤ n ≤ 10
<span style="color: red;">2 ≤ n ≤ 10
1 ≤ p ≤ 1.000.000.000.000</span>
1 ≤ p ≤ 1.000.000.000.000</span>


Exemplu:
== Exemplu: ==
Intrare
Intrare


4 120
: 4 120
Ieșire
Ieșire
 
: Date de intrare valide
1 4 16 64
: 1 4 16 64


==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
def validate_input(n: int, p: int) -> bool:
def validare_date(n: int, p: int) -> bool:
     """
     """
     Functia de validare pentru input.
     Functia de validare pentru input.
Line 33: Line 33:




def powers_of_n(n: int, p: int) -> str:
def puterea_lui_n(n: int, p: int):
     """
     """
     Functia de rezolvare pentru exercitiul dat.
     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.
     Returneaza un string cu toate puterile lui n mai mici sau egale cu p, separate prin exact un spatiu.
     """
     """
     powers = []
     puteri = []
     i = 0
     i = 0
     while n ** i <= p:
     while n ** i <= p:
         powers.append(n ** i)
         puteri.append(n ** i)
         i += 1
         i += 1
     return ' '.join(map(str, powers))
     print(' '.join(map(str, puteri)))




def main() -> None:
if __name__ == '__main__':
     """
     """
     Functia main care citeste datele de intrare, verifica validitatea lor si afiseaza rezultatul.
     Functia if __name__ care citeste datele de intrare, verifica validitatea lor si afiseaza rezultatul.
     """
     """
     n, p = map(int, input().split())
     n, p = map(int, input().split())
     if validate_input(n, p):
     if validare_date(n, p):
         print(powers_of_n(n, p))
         print("Date de intrare valide")
 
        puterea_lui_n(n, p)
 
    else:
if __name__ == '__main__':
        print("Date de intrare invalide")
    main()
</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.

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.