2811 - Triplete
Cerința
Subprogramul triplete
are trei parametri, a
, b
și c
, în această ordine, prin care primește câte un număr natural din intervalul [0,10000]
(a<b
). Subprogramul afișează pe ecran în ordine lexicografică toate tripletele de numere naturale, x
, y
și z
, soluții ale ecuației x+y+z=c
, cu proprietatea că a≤ x≤ y≤ z≤ b
.
Fiecare triplet afișat pe câte o linie și este încadrat între acolade, iar numerele x
, y
și z
sunt afișate în această ordine, separate prin câte o virgulă. Dacă nu există niciun triplet cu proprietatea cerută, se afişează mesajul nu exista
.
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:
a=2, b=4, c=8
Output:
{2,2,4}
{2,3,3}
Exemplul 2
Input:
a=-1, b=0, c=4
Output:
Parametrii a, b, sau c nu respectă condițiile specificate.
Rezolvare
def is_valid_interval(a, b, c):
"""
Verifică dacă a, b și c se află în intervalul [0, 10000] și respectă relația a < b < c.
:param a: Număr natural de verificat.
:param b: Număr natural de verificat.
:param c: Număr natural de verificat.
:return: True dacă toți parametrii sunt în interval și respectă relația specificată, False în caz contrar.
"""
return 0 <= a <= 10000 and 0 <= b <= 10000 and 0 <= c <= 10000 and a < b < c
def triplete(a, b, c):
"""
Afișează în ordine lexicografică toate tripletele de numere naturale (x, y, z) soluții ale ecuației x+y+z=c,
cu proprietatea că a ≤ x ≤ y ≤ z ≤ b.
:param a: Număr natural din intervalul [0, 10000].
:param b: Număr natural din intervalul [0, 10000], a < b.
:param c: Număr natural din intervalul [0, 10000].
"""
# Verificăm condițiile privind a, b, c și relația a < b < c
if is_valid_interval(a, b, c):
found_triplet = False
# Iterăm prin posibilele valori pentru x, y, z
for x in range(a, b + 1):
for y in range(x, b + 1):
z = c - x - y
# Verificăm condiția x ≤ y ≤ z
if x <= y <= z <= b:
# Afișăm tripletul pe ecran
print(f'{{{x},{y},{z}}}')
found_triplet = True
# Afisăm mesajul dacă nu există niciun triplet
if not found_triplet:
print("nu exista")
else:
print("Parametrii a, b, sau c nu respectă condițiile specificate.")
# Exemplu de utilizare:
triplete(int(input()), int(input()), int(input()))