2842 - Triplete 1
Cerința[edit | edit source]
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[edit | edit source]
Input:
n=8
Output:
(0,1,8)
(0,2,4)
(1,2,3)
Exemplul 2[edit | edit source]
Input:
n=1
Output:
Nu sunt indeplinite conditiile
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> 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()))
</syntaxhighlight>