0983 - Ecuatie
Cerința[edit | edit source]
Se dau a și b numere naturale nenule, cu a < b. Să se determine soluțiile ecuației 1/x+1/y+1/z=a/b , unde x,y,z sunt numere naturale nenule .
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele naturale nenule a și b, separate prin spațiu.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran, pe linii separate, soluțiile ecuației în ordinea crescătoare a valorilor lui x, iar la valori egale ale lui x în ordinea crescătoare a valorilor lui y . În cazul în care problema nu are soluţii se va afişa mesajul NU ARE SOLUTII.
Restricții și precizări[edit | edit source]
- 1 ≤ a < b ≤ 100
- Se vor afișa numai soluțiile cu x ≤ y ≤ z numere naturale
Exemplu 1[edit | edit source]
- Intrare
2 3
- Iesire
2 7 42
2 8 24
2 9 18
2 10 15
2 12 12
3 4 12
3 6 6
4 4 6
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def main():
# Citirea datelor de intrare a, b = map(int, input("Introduceți valorile a și b, separate prin spațiu: ").strip().split())
assert 1 <= a < b <= 100, "Restricțiile sunt 1 ≤ a < b ≤ 100"
solutions = []
# Generarea soluțiilor print("Generarea soluțiilor...") for x in range(1, 1001): for y in range(x, 1001): for z in range(y, 1001): if a * (x * y * z) == b * (x * y + y * z + z * x): solutions.append((x, y, z)) print(x,y,z)
# Sortarea soluțiilor în ordine crescătoare a lui x, iar pentru valori egale de x, în ordine crescătoare a lui y și z solutions.sort(key=lambda sol: (sol[0], sol[1], sol[2]))
if (solutions == 0): print("NU EXISTA SOLUTII")
if __name__ == "__main__":
main()
</syntaxhighlight>