Возьмем, например, такое уравнение: 5x + 10y + 15z = 100. Какие значения
должны иметь переменные x, y, z, чтобы уравнение было верным (т. е. каковы
корни уравнения)? Они могут быть такими: x = 1, y = 8, z = 1. Или такими: x =
4, y = 2, z = 4. Становится понятно, что корней у подобных уравнений может
быть множество.
Требуется написать программу, выводящую на экран все возможные корни уравнения
вида ax + by + cz = d, где a, b, c, d - коэффициенты (известны), а x, y, z -
переменные (требуется найти). При этом пусть все числа должны быть
натуральными числами (т. е. > 0).
Решается данная задача методом перебора всех возможных значений x, y, z с
учетом их коэффициентов. Так если a = 10 и d = 100, то x может принять
значения от 1 до 10, т.к. 10 * 10 = 100.
# Найти все возможные корни уравнения вида
# ax + by + cz = d, где a, b, c, d - задаются,
# x, y, z - требуется найти.
# Все числа (коэффициенты и переменные) - натуральные числа (т.е. > 0).
d = int(input('s = '))
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
for i in range(1,d//a):
for j in range(1,d//b):
for k in range(1,d//c):
if i*a + j*b + k*c == d:
print("%d*%d + %d*%d + %d*%d = %d" % (a,i,b,j,c,k,d))
Пример выполнения кода:
s = 20
a = 2
b = 4
c = 6
2*1 + 4*3 + 6*1 = 20
2*2 + 4*1 + 6*2 = 20
2*3 + 4*2 + 6*1 = 20
2*5 + 4*1 + 6*1 = 20
Обычно данную задачу приводят в ином контексте. Требуется найти, сколькоразличных (трех видов) товаров можно купить на определенную сумму.
summa = int(input("Сколько у вас денег? "))
subj1 = int(input("Цена экземпляра товара 1: "))
subj2 = int(input("Цена экземпляра товара 2: "))
subj3 = int(input("Цена экземпляра товара 3: "))
for i in range(1, summa // subj1):
for j in range(1,summa // subj2):
for k in range(1,summa // subj3):
if subj1 * (i) + subj2*(j)+subj3*(k) == summa:
print(i,j,k)
Пример выполнения кода:
Сколько у вас денег? 100
Цена экземпляра товара 1: 10
Цена экземпляра товара 2: 20
Цена экземпляра товара 3: 30
1 3 1
2 1 2
3 2 1
5 1 1
При этом если ставится условие, чтобы всего количество предметов равнялоськакому-то числу или было не меньше какого-то числа, то в условии инструкции if
следует через логический оператор and добавить второе условие (например, a + b
+ c > 5).