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()))