2695 - Cub Perfect: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
 
(3 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">
n = int(input())
def validare_date(n, nums):
for i in range(n):
    if n < 1 or n > 1000:
     x = int(input())
        return False
     cub = round(pow(abs(x), 1/3)) # calculăm cubul rădăcinii a treia a valorii absolute a lui x
    for num in nums:
     if cub**3 == abs(x): # verificăm dacă cubul este egal cu x (sau cu valoarea absolută a lui x)
        if num < -1000000000000 or num > 1000000000000:
         print("DA")
            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:
     else:
         print("NU")
         print("Date de intrare invalide")
 
</syntaxhighlight>
</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:
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".