2695 - Cub Perfect: Diferență între versiuni

De la Universitas MediaWiki
Linia 29: Linia 29:
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
n = int(input())
import math
for i in range(n):
 
     x = int(input())
def is_cubic(n):
     cub = round(pow(abs(x), 1/3)) # calculăm cubul rădăcinii a treia a valorii absolute a lui x
    return round(n ** (1.0 / 3)) ** 3 == n
     if cub**3 == abs(x): # verificăm dacă cubul este egal cu x (sau cu valoarea absolută a lui x)
 
        print("DA")
def validate_input(n, nums):
    else:
    if n < 1 or n > 1000:
        print("NU")
        return False
    for num in nums:
        if num < -1000000000000 or num > 1000000000000:
            return False
    return True
 
def check_cubic_perfection(n, nums):
     if not validate_input(n, nums):
        return "Invalid input"
    result = []
    for num in nums:
        if is_cubic(abs(num)):
            result.append("DA")
        else:
            result.append("NU")
    return " ".join(result)
 
def main():
     n = int(input())
     nums = list(map(int, input().split()))
    print(check_cubic_perfection(n, nums))
 
if __name__ == '__main__':
    main()
 
</syntaxhighlight>
</syntaxhighlight>

Versiunea de la data 24 martie 2023 15:27

Cerința:

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:

Programul citește de la tastatură numărul n și n numere naturale.

Date de ieșire:

Programul va afișa DA sau NU pe câte o linie dacă numărul citit este sau nu cub perfect.

Restricții și precizări:

1 ≤ n ≤ 1000 cele n numere sunt -1.000.000.000.000 ≤ x ≤ 1.000.000.000.000

Exemplu:

Intrare 5 1 -1 8 -8 9

Ieșire DA DA DA DA NU

Explicație:

S-au citit 5 numere, s-a verificat dacă sunt cuburi perfecte și s-a afișat răspunsul corespunzător.

Rezolvare

import math

def is_cubic(n):
    return round(n ** (1.0 / 3)) ** 3 == n

def validate_input(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 check_cubic_perfection(n, nums):
    if not validate_input(n, nums):
        return "Invalid input"
    result = []
    for num in nums:
        if is_cubic(abs(num)):
            result.append("DA")
        else:
            result.append("NU")
    return " ".join(result)

def main():
    n = int(input())
    nums = list(map(int, input().split()))
    print(check_cubic_perfection(n, nums))

if __name__ == '__main__':
    main()