# Код на ruby 2.2.3p173 def zadanie(jump1, jump2) min = jump1 for i in 1..1000 next if (i*jump1)%jump2 == 0 or (i*jump2)%jump1 == 0
if min > (i*jump1)%jump2 min = (i*jump1)%jump2 p [min, "#{i} * #{jump1} - #{i*jump1/jump2} * #{jump2}"] end
if min > (i*jump2)%jump1 min = (i*jump2)%jump1 p [min, "#{i} * #{jump2} - #{i*jump2/jump1} * #{jump1}"] end end return min end # # Примеры применения p zadanie(33, 55)
1) ну первое самое простое: можно получить 16, 28, 44 2) далее можно 12, налить в 28 перелить в 16, из 16л вылить в раковину останется 28 - 16 = 12 3) 32 л, набрать 16, перелить в 28л 16 л, снова набрать 16 л. итого 16 + 16 = 32 4) далее 4л, набрать 16, перелить в 28, набрать в 16л, долить в 28л, в 16л останется 4л, а из 28л вылить в раковину 5) 40л, набрал в 28л, перелил в 16л, вылил из 16л, остаток 12л, перелил в 16л, набрал 28л, итого 12 + 28 = 40 6) 24л, тоже что и в пятом, только с продолжением, набрал в 28л, перелил в 16л, в 28л осталось 12л, из 16 вылил, перелил остаток 12 л в 16 - ю, набрал в 28 л, долил в 16 - ю 4 л, и вылил из 16л все. В 28л осталось 24л. наверное так..
def zadanie(jump1, jump2)
min = jump1
for i in 1..1000
next if (i*jump1)%jump2 == 0 or (i*jump2)%jump1 == 0
if min > (i*jump1)%jump2
min = (i*jump1)%jump2
p [min, "#{i} * #{jump1} - #{i*jump1/jump2} * #{jump2}"]
end
if min > (i*jump2)%jump1
min = (i*jump2)%jump1
p [min, "#{i} * #{jump2} - #{i*jump2/jump1} * #{jump1}"]
end
end
return min
end
# # Примеры применения
p zadanie(33, 55)
Вывод
[22, "1 * 55 - 1 * 33"]
[11, "2 * 33 - 1 * 55"]
11
Т.е. минимум при 2 * 33 - 1 * 55 = 11
2) далее можно 12, налить в 28 перелить в 16, из 16л вылить в раковину останется 28 - 16 = 12
3) 32 л, набрать 16, перелить в 28л 16 л, снова набрать 16 л. итого 16 + 16 = 32
4) далее 4л, набрать 16, перелить в 28, набрать в 16л, долить в 28л, в 16л останется 4л, а из 28л вылить в раковину
5) 40л, набрал в 28л, перелил в 16л, вылил из 16л, остаток 12л, перелил в 16л, набрал 28л, итого 12 + 28 = 40
6) 24л, тоже что и в пятом, только с продолжением, набрал в 28л, перелил в 16л, в 28л осталось 12л, из 16 вылил, перелил остаток 12 л в 16 - ю, набрал в 28 л, долил в 16 - ю 4 л, и вылил из 16л все. В 28л осталось 24л.
наверное так..