0983 - Ecuatie
De la Universitas MediaWiki
Cerința
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
Programul citește de la tastatură numerele naturale nenule a și b, separate prin spațiu.
Date de ieșire
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
- 1 ≤ a < b ≤ 100
- Se vor afișa numai soluțiile cu x ≤ y ≤ z numere naturale
Exemplu 1
- 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
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()