14 и 35 делятся на 7, поэтому можно получить только количества воды, кратные 7 л. Максимальное возможное число литров в двух сосудах равно 14 + 35 = 49, поэтому можно пробовать получить 0 л, 7 л, 14 л, 21 л, 28 л, 35 л, 42 л, 49 л.
0 л, 14 л, 35 л, 49 л - очевидно, получаются, это ни одного заполненного бака, заполненный бак на 14, заполненный бак на 35, оба заполненных бака.
21 л: заполнить бак на 35, отлить 14 в меньший бак, вылить воду из меньшего бака. 7 л: налить 21 л в больший бак (мы это уже умеем), отлить 14 в меньший бак, вылить воду из меньшего бака. 28 л: наполнить меньший бак, вылить из меньшего бака в больший, заполнить меньший бак. 42 л: налить 7 л в больший бак, перелить в меньший бак, заполнить больший бак.
Итого, можно получить 0 л, 7 л, 14 л, 21 л, 28 л, 35 л, 42 л, 49 л.
Обозначим x1 <> x2 через y1, x3 <> x4 через y2 и т.д. Получим систему
y1 or y2 = 1 y2 or y3 = 1 y3 or y4 = 1 y4 or y5 = 1
Количество наборов y1..y5, удовлетворяющих данным условиям - 13. Набор будет являться решением системы, если в нем нет идущих подряд нулей - тогда в каждой из пар (y1,y2), (y2,y3), (y3,y4), (y4,y5) будет хотя бы одна единица, т.е. все операции or также будут давать единицу. Можно перебрать такие наборы вручную:
Либо воспользоваться формулой F(n) = F(n-1) + F(n-2), F(0) = 1, F(1) = 2; Тогда F(5) = 13. Здесь F(n) - количество последовательностей длины n, где нет двух идущих подряд нулей - их можно разбить на две группы, в одной на первой позиции стоит 1 (их F(n-1), т.к. оставшиеся элементы выбираются в соответствии с тем же правилом), в другой - 0 (их F(n-2), т.к. раз в последовательности нет двух идущих подряд нулей, на второй позиции обязана стоять единица).
Далее каждому значению y соответствуют две пары возможных значений x-ов. Т.е., например, y1 = 1 соответствуют x1 = 1, x2 = 0 и x1 = 0, x2 = 1, а y1 = 0 соответствуют x1 = 0, x2 = 0 и x1 = 1, x2 = 1.
В наборе y1..y5 каждому y соответствует два набора x -> всему набору y соответствует 2^5 = 32 набора x. Всего 13 наборов y -> 13 * 32 = 416 наборов x.
0 л, 14 л, 35 л, 49 л - очевидно, получаются, это ни одного заполненного бака, заполненный бак на 14, заполненный бак на 35, оба заполненных бака.
21 л: заполнить бак на 35, отлить 14 в меньший бак, вылить воду из меньшего бака.
7 л: налить 21 л в больший бак (мы это уже умеем), отлить 14 в меньший бак, вылить воду из меньшего бака.
28 л: наполнить меньший бак, вылить из меньшего бака в больший, заполнить меньший бак.
42 л: налить 7 л в больший бак, перелить в меньший бак, заполнить больший бак.
Итого, можно получить 0 л, 7 л, 14 л, 21 л, 28 л, 35 л, 42 л, 49 л.
y1 or y2 = 1
y2 or y3 = 1
y3 or y4 = 1
y4 or y5 = 1
Количество наборов y1..y5, удовлетворяющих данным условиям - 13. Набор будет являться решением системы, если в нем нет идущих подряд нулей - тогда в каждой из пар (y1,y2), (y2,y3), (y3,y4), (y4,y5) будет хотя бы одна единица, т.е. все операции or также будут давать единицу. Можно перебрать такие наборы вручную:
11111, 11110, 11101, 11011, 11010, 10111, 10110, 10101,
01111, 01110, 01101, 01011, 01010
Либо воспользоваться формулой F(n) = F(n-1) + F(n-2), F(0) = 1, F(1) = 2; Тогда F(5) = 13. Здесь F(n) - количество последовательностей длины n, где нет двух идущих подряд нулей - их можно разбить на две группы, в одной на первой позиции стоит 1 (их F(n-1), т.к. оставшиеся элементы выбираются в соответствии с тем же правилом), в другой - 0 (их F(n-2), т.к. раз в последовательности нет двух идущих подряд нулей, на второй позиции обязана стоять единица).
Далее каждому значению y соответствуют две пары возможных значений x-ов. Т.е., например, y1 = 1 соответствуют x1 = 1, x2 = 0 и x1 = 0, x2 = 1, а y1 = 0 соответствуют x1 = 0, x2 = 0 и x1 = 1, x2 = 1.
В наборе y1..y5 каждому y соответствует два набора x -> всему набору y соответствует 2^5 = 32 набора x.
Всего 13 наборов y -> 13 * 32 = 416 наборов x.
ответ: 416