2842 - Triplete 1

De la Universitas MediaWiki

Cerința

Se consideră subprogramul triplete, cu un singur parametru, n, prin care primeşte o valoare naturală din intervalul [2,10000]. Subprogramul afișează pe ecran toate tripletele de numere naturale (x,y,z) cu proprietatea că x<y<z și x·y+y·z=n. Fiecare triplet se afișează pe câte o linie a ecranului, iar numerele din fiecare triplet sunt separate prin câte o virgulă și încadrate între paranteze rotunde.

Scrieți definiţia completă a subprogramului.

Important:

Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.

Exemplul 1

Input:

n=8

Output:

(0,1,8)

(0,2,4)

(1,2,3)

Exemplul 2

Input:

n=1

Output:

Nu sunt indeplinite conditiile

Rezolvare

def is_valid_interval(n):
    """
    Verifică dacă n se află în intervalul [2, 10000].

    :param n: Valoarea naturală de verificat.
    :return: True dacă n este în interval, False în caz contrar.
    """
    return 2 <= n <= 10000


def triplete(n):
    """
    Afișează toate tripletele de numere naturale (x, y, z) cu proprietatea că x < y < z și x * y + y * z = n.

    :param n: Valoarea naturală din intervalul [2, 10000].
    """
    # Verificăm dacă n se află în intervalul specificat
    if is_valid_interval(n):
        # Iterăm prin posibilele valori pentru x, y, z
        for x in range(0, n):
            for y in range(x + 1, n):
                for z in range(y + 1, n+1):
                # Verificăm condiția x < y < z
                    if x < y < z and x * y + y * z == n:
                    # Afișăm tripletul pe ecran
                        print(f'({x},{y},{z})')
    else:
        print("Nu sunt indeplinite conditiile")
# Exemplu de utilizare:
# Pentru n = 8, subprogramul va afișa toate tripletele care satisfac condițiile date.
triplete(int(input()))