Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Информатика. Считаем ноги

Классическая задача на уравнения в целых числах формулируется так. В комнате стояло несколько (>=1) трёхногих табуреток и несколько (>=1) собак (четвероногих). Сколько могло быть табуреток и собак, если всего ног было 30. Или, если записать математически: 3*t + 4*s = 36. У такой системы в натуральных числах может быть несколько решений (8 табуреток и 3 собаки; 4 табуретки и 6 собак, варианты с 0 собак и 0 табуреток условию не удовлетворяют).

Напишите программу, которая будет принимать на вход название и количество ног для двух типов объектов, а также суммарное количество ног в комнате, а выводить все возможные варианты по возрастанию количества экземпляров первого объекта и их количество в виде:

Ввод: Вывод:
табуретки табуретки - 4, собаки - 6
3 (кол-во ног) табуретки - 8, собаки - 3
собаки Итого вариантов - 2
4 (кол-во ног)
36

хромые кошки хромые кошки - 5, офисные стулья - 2
3 Итого вариантов - 1
офисные стулья
5
25


осьминоги Итого вариантов - 0
8
кальмары
10
375


Если что это надо на питоне сделать.
Пожалуйста помогите

Дополнен

И решение нужно с помощью цикла. Такая тема (.

По дате
По рейтингу
Аватар пользователя
Новичок

С таким циклом:

123456
 legs1, legs2, N = map(int, input('\033[4m').split()) 
k = 0; print('\033[0m') 
for x in range(N // legs1 + 1): 
    y = (N - x * legs1) / legs2; inty = int(y) 
    if y == inty: k += 1; print(str(k) + ') ', x, inty) 
input() 

С таким циклом:

123456
 legs1, legs2, N = map(int, input('legs1 legs2 N: ').split()) 
k = 0; print() 
for x in range(N // legs1 + 1): 
    if (N - x * legs1) % legs2 == 0: 
	k += 1; print(str(k) + ') ', x, (N - x * legs1) // legs2) 
input() 

С двойным циклом:

1234
 legs1, legs2, N = map(int, input('legs1 legs2 N: ').split()) 
for x in range(N//legs1+1):
    for y in range((N-x*legs1)//legs2+1):
        if x*legs1+y*legs2==N: print(x,y)