Умамы есть кастрюля, вмещающая ровно 4 литра воды и пятилитровая банка, а также водопроводный кран, откуда можно наливать воду, и раковина, куда можно выливать воду. ей нужно, чтобы в кастрюле оказалось ровно 3 литра воды. какое наименьшее количество переливаний ей для этого потребуется сделать?
налить воду из раковины — переливание, вылить воду из кастрюли в банку или обратно — переливание, вылить воду из чего-либо в раковину — тоже переливание.
обратите внимание на то, что нам нужно, чтобы получилось ровно 3 литра, поэтому наливать воду "на глазок" не получится, можно ошибиться.
151
235
Ответы на вопрос:
Вариант понимания условия №1. мы достаём монеты по одной, и порядок монет важен (т.е., например, если мы вытащили сначала монету 1 рубль, потом 5 рублей и если сначала 5 рублей, потом 1 рубль - разные способы). обозначим c(n) - число способов набрать n рублей. очевидно, c(n) = c(n-1) + c(n-2) + c(n-5) + c(n-10) [представим себе. что мы знаем число способов набрать n-5 рублей. тогда если мы уверены, что последней вытащили 5-рублёвую монету, то способов будет c(n). финальный ответ - сумма по всем возможным выборам последней монеты] полагая c(n) = 0 при всех n < 0, c(0) = 1, получим по этой формуле с(66) = 1431020833989040 cчитать можно, например, такой программой: var c: array[-9..66] of biginteger; begin for var i : = -9 to -1 do c[i] : = 0; c[0] : = 1; for var i : = 1 to 66 do c[i] : = c[i - 1] + c[i - 2] + c[i - 5] + c[i - 10]; print(c[66]); end. вариант понимания условия №2 . нам порядок выдачи не важен. тогда вопрос по сути сводится к числу целых неотрицательных решений уравненияx + 2y + 5z + 10t = 66, где x, y, z, t - число 1-, 2-, 5- и 10-рублёвых монет соответственно. тут можно написать общую формулу, но она будет объемной, так что вычислять по ней совсем не радостно (даже с компьютером). поэтому проще все варианты перебрать. ответ получится 700. пример программы: begin var count : = 0; for var t : = 0 to 6 do for var z : = 0 to (66 - 10*t) div 5 do for var y : = 0 to (66 - 10*t - 5*z) div 2 do inc(count); print(count); end. подобным образом можно считать и вручную. по сути нам требуется вычислить сумму [1 + (66 - 10t - 5z)/2] по всем допустимым t, z ([x] - целая часть x). перебираем сначала t, потом z: t = 0. z = 0,1,. вклад в сумму 34 + 31 + 29 + 26 + 24 + 21 + 19 + 16 + 14 + 11 + 9 + 6 + 4 + 1 = 245. t = 1. z = 0,1,. легко понять, что здесь будут все числа без первых двух слагаемых: 29 + 26 + 24 + 21 + 19 + 16 + 14 + 11 + 9 + 6 + 4 + 1 = 245 - 34 - 31 = 180 аналогично, t = 2: 180 - 29 - 26 = 125 t = 3: 125 - 26 - 21 = 80 t = 4: 80 - 19 - 16 = 45 t = 5: 45 - 14 - 11 = 20 t = 6: 20 - 9 - 6 = 5 итого 245 + 180 + 125 + 80 + 45 + 20 + 5 = 700
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Vikohkaice22.11.2022 15:05
-
Кристина0101200429.07.2022 03:28
-
Iriska91l2306.09.2020 10:38
-
kristinasotsen24.08.2020 23:51
-
Cfhbcbudh31.08.2022 15:48
-
зайка58327.09.2022 07:35
-
somovalelyЛеля1507.10.2021 16:18
-
Г0ошан4ик11.05.2021 23:05
-
tim14stefan2419.10.2021 02:09
-
Tet4ip06y02.01.2020 19:06
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.