Возьмем, например, такое уравнение: 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).