2695 - Cub Perfect: Difference between revisions
Paul Ungur (talk | contribs) |
Paul Ungur (talk | contribs) No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
==Date de ieșire:== | ==Date de ieșire:== | ||
Programul va afișa <span style="color: red;"> DA</span> sau <span style="color: red;"> NU</span> pe câte o linie dacă numărul citit este sau nu cub perfect. | Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi Programul va afișa <span style="color: red;"> DA</span> sau <span style="color: red;"> NU</span> pe câte o linie dacă numărul citit este sau nu cub perfect. Î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:== | ||
Line 14: | Line 14: | ||
==Exemplu:== | ==Exemplu:== | ||
Intrare | Intrare | ||
5 | : 5 | ||
1 -1 8 -8 9 | : 1 -1 8 -8 9 | ||
Ieșire | Ieșire | ||
DA | : Date de intrare valide | ||
DA | : DA | ||
DA | : DA | ||
DA | : DA | ||
NU | : DA | ||
: NU | |||
==Explicație:== | ==Explicație:== | ||
Line 29: | Line 30: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line="1"> | <syntaxhighlight lang="python" line="1"> | ||
def validare_date(n, nums): | |||
def | |||
if n < 1 or n > 1000: | if n < 1 or n > 1000: | ||
return False | return False | ||
Line 42: | Line 38: | ||
return True | return True | ||
def | |||
def este_cub(n): | |||
return round(n ** (1.0 / 3)) ** 3 == n | |||
def verificare_cub(n, nums): | |||
result = [] | result = [] | ||
for num in nums: | for num in nums: | ||
if | if este_cub(abs(num)): | ||
result.append("DA") | result.append("DA") | ||
else: | else: | ||
result.append("NU") | result.append("NU") | ||
print("\n".join(result)) | |||
if __name__ == '__main__': | |||
n = int(input()) | n = int(input()) | ||
nums = list(map(int, input().split())) | nums = list(map(int, input().split())) | ||
print( | if validare_date(n, nums): | ||
print("Date de intrare valide") | |||
verificare_cub(n, nums) | |||
else: | |||
print("Date de intrare invalide") | |||
</syntaxhighlight> | |||
==Explicatie cod:== | |||
Codul Python de mai sus definește trei funcții: validare_date, este_cub și verificare_cub. Iată o explicație pentru fiecare dintre ele: | |||
if __name__ == '__main__': | Funcția validare_date(n, nums): | ||
Această funcție primește doi parametri, n și nums. | |||
Verifică mai multe condiții pentru a valida datele introduse: | |||
Verifică dacă n este mai mic decât 1 sau mai mare decât 1000. Dacă această condiție nu este îndeplinită, funcția returnează False, semnalând că datele sunt invalide. | |||
Verifică fiecare element num din lista nums pentru a se încadra în intervalul -1000000000000 și 1000000000000. Dacă unul dintre elementele nu se încadrează în acest interval, funcția returnează False, semnalând că datele sunt invalide. | |||
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide. | |||
Funcția este_cub(n): | |||
Această funcție primește un singur parametru, n, reprezentând un număr întreg. | |||
Verifică dacă n este un cub perfect. | |||
Folosind proprietatea unui cub perfect, se calculează rădăcina cubică a valorii absolute a lui n (abs(n)) și se verifică dacă ridicarea la puterea 3 a acestei rădăcini este egală cu n. Dacă da, funcția returnează True, semnalând că n este un cub perfect. În caz contrar, funcția returnează False. | |||
Funcția verificare_cub(n, nums): | |||
Această funcție primește doi parametri, n și nums, reprezentând un număr întreg și o listă de numere întregi. | |||
Funcția verifică pentru fiecare element num din lista nums dacă valoarea absolută a acestuia este un cub perfect folosind funcția este_cub. Dacă este un cub perfect, se adaugă string-ul "DA" în lista de rezultate result. Altfel, se adaugă string-ul "NU" în lista de rezultate. | |||
La final, funcția afișează elementele din lista result, separate prin linii noi, folosind funcția print("\n".join(result)). | |||
În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni: | |||
Se citește de la tastatură un număr întreg n folosind funcția input(). | |||
Se citește o listă de numere întregi nums folosind funcția input().split() și convertind elementele la tipul int cu ajutorul funcției map(int, ...). | |||
Se apelează funcția validare_date(n, nums) pentru a verifica dacă datele introduse sunt valide. Dacă sunt valide, se afișează mesajul "Date de intrare valide" și se apelează funcția verificare_cub(n, nums). În caz contrar, se afișează mesajul "Date de intrare invalide". |
Latest revision as of 18:09, 29 June 2023
Cerința:[edit | edit source]
Se citește un număr n și apoi n numere întregi. Să se verifice pentru fiecare număr dacă este cub perfect.
Date de intrare:[edit | edit source]
Programul citește de la tastatură numărul n și n numere naturale.
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 DA sau NU pe câte o linie dacă numărul citit este sau nu cub perfect. Î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]
1 ≤ n ≤ 1000 cele n numere sunt -1.000.000.000.000 ≤ x ≤ 1.000.000.000.000
Exemplu:[edit | edit source]
Intrare
- 5
- 1 -1 8 -8 9
Ieșire
- Date de intrare valide
- DA
- DA
- DA
- DA
- NU
Explicație:[edit | edit source]
S-au citit 5 numere, s-a verificat dacă sunt cuburi perfecte și s-a afișat răspunsul corespunzător.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1"> def validare_date(n, nums):
if n < 1 or n > 1000: return False for num in nums: if num < -1000000000000 or num > 1000000000000: return False return True
def este_cub(n):
return round(n ** (1.0 / 3)) ** 3 == n
def verificare_cub(n, nums):
result = [] for num in nums: if este_cub(abs(num)): result.append("DA") else: result.append("NU") print("\n".join(result))
if __name__ == '__main__':
n = int(input()) nums = list(map(int, input().split())) if validare_date(n, nums): print("Date de intrare valide") verificare_cub(n, nums) else: print("Date de intrare invalide")
</syntaxhighlight>
Explicatie cod:[edit | edit source]
Codul Python de mai sus definește trei funcții: validare_date, este_cub și verificare_cub. Iată o explicație pentru fiecare dintre ele:
Funcția validare_date(n, nums): Această funcție primește doi parametri, n și nums. Verifică mai multe condiții pentru a valida datele introduse: Verifică dacă n este mai mic decât 1 sau mai mare decât 1000. Dacă această condiție nu este îndeplinită, funcția returnează False, semnalând că datele sunt invalide. Verifică fiecare element num din lista nums pentru a se încadra în intervalul -1000000000000 și 1000000000000. Dacă unul dintre elementele nu se încadrează în acest interval, funcția returnează False, semnalând că datele sunt invalide. Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide. Funcția este_cub(n): Această funcție primește un singur parametru, n, reprezentând un număr întreg. Verifică dacă n este un cub perfect. Folosind proprietatea unui cub perfect, se calculează rădăcina cubică a valorii absolute a lui n (abs(n)) și se verifică dacă ridicarea la puterea 3 a acestei rădăcini este egală cu n. Dacă da, funcția returnează True, semnalând că n este un cub perfect. În caz contrar, funcția returnează False. Funcția verificare_cub(n, nums): Această funcție primește doi parametri, n și nums, reprezentând un număr întreg și o listă de numere întregi. Funcția verifică pentru fiecare element num din lista nums dacă valoarea absolută a acestuia este un cub perfect folosind funcția este_cub. Dacă este un cub perfect, se adaugă string-ul "DA" în lista de rezultate result. Altfel, se adaugă string-ul "NU" în lista de rezultate. La final, funcția afișează elementele din lista result, separate prin linii noi, folosind funcția print("\n".join(result)). În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni:
Se citește de la tastatură un număr întreg n folosind funcția input(). Se citește o listă de numere întregi nums folosind funcția input().split() și convertind elementele la tipul int cu ajutorul funcției map(int, ...). Se apelează funcția validare_date(n, nums) pentru a verifica dacă datele introduse sunt valide. Dacă sunt valide, se afișează mesajul "Date de intrare valide" și se apelează funcția verificare_cub(n, nums). În caz contrar, se afișează mesajul "Date de intrare invalide".