В принципе все кто писал догадались как решить эту задачу. Некоторые объяснения я правда не понял. Сейчас и я попытаюсь объяснить решение этой задачи. Не знаю получится у меня объяснить доходчиво или нет.........
Итак:
Берём 5 групп по 16 бочек - каждый раб выпьет по 16 бочек.
Далее берём ещё 10 групп по 8 бочек и рабы выпьют в следующей последовательности:
1-2, 1-3, 1-4, 1-5, 2-3, 2-4, 2-5, 3-4, 3-5, 4-5
Потом 10 групп по 4 бочки, рабы:
1-2-3, 1-2-4, 1-2-5, 1-3-4, 1-3-5, 1-4-5, 2-3-4, 2-3-5, 2-4-5, 3-4-5
Потом берём 5 групп по 2 бочки, рабы:
1-2-3-4, 1-2-3-5, 1-2-4-5, 1-3-4-5, 2-3-4-5
И последняя группа - это 1 группа из одной бочки из которой выпьют все пять рабов: 1-2-3-4-5.
Подсчитаем бочки: 16*5 + 8*10 + 4*10 + 2*5 + 1 = 211
В первый день будет продегустировано 211 бочек.
Теперь далее:
Умерли все - имеем бочку из которой выпили все, значит она с ядом.
Остался в живых один - имеем две бочки из которых он не пил. На следующий день он пьёт из одной из этих двух бочек, если остался жив то вторая с ядом, если умер то эта.
Остались в живых два - имеем 4 бочки из которых они не пили. На следующий день пьют следующим образом.
Из одной не пьют вообще, далее один пьёт из второй, второй из третьей, вдвоём пьют из четвёртой.
Соответственно исходя из того кто умер будет ясно какая бочка с ядом.
Потом остались в живых 3 - 8 бочек.
Имеем следующие комбинации (как и прежде комбинации применяются к каждой бочке). 0 - это бочка из которой никто не пьёт. Получаем:
0, 1, 2, 3, 1-2, 1-3, 2-3, 1-2-3
Осталось в живых 4 раба - это 16 бочек, следующие комбинации:
0, 1, 2, 3, 4, 1-2, 1-3, 1-4, 2-3, 2-4, 3-4, 1-2-3, 1-2-4, 1-3-4, 2-3-4, 1-2-3-4
Остались в живых все, тогда на следующий день берём оставшиеся 240 - 211 = 29, но на самом деле можно проверить 32 бочки, то есть на самом деле можно за два дня проверить 243 бочки.
Итак 32 бочки:
0, 1, 2, 3, 4, 5, 1-2, 1-3, 1-4, 1-5, 2-3, 2-4, 2-5, 3-4, 3-5, 4-5, 1-2-3, 1-2-4, 1-2-5, 1-3-4, 1-3-5, 1-4-5, 2-3-4, 2-3-5, 2-4-5, 3-4-5, 1-2-3-4, 1-2-3-5, 1-2-4-5, 1-3-4-5, 2-3-4-5, 1-2-3-4-5
Вот собственно и всё не знаю понятно объяснил или нет.
Очень понравилось решение:
Конечно это задача вряд ли имеет реальное воплощение, но если в условии указать что умирает после 24 часов то решение предложенное JAZZ вполне подходит.
По поводу задачи ранее - вот это объяснение не понял.
Achenar если можешь объясни более подробней.
Итак:
Берём 5 групп по 16 бочек - каждый раб выпьет по 16 бочек.
Далее берём ещё 10 групп по 8 бочек и рабы выпьют в следующей последовательности:
1-2, 1-3, 1-4, 1-5, 2-3, 2-4, 2-5, 3-4, 3-5, 4-5
Потом 10 групп по 4 бочки, рабы:
1-2-3, 1-2-4, 1-2-5, 1-3-4, 1-3-5, 1-4-5, 2-3-4, 2-3-5, 2-4-5, 3-4-5
Потом берём 5 групп по 2 бочки, рабы:
1-2-3-4, 1-2-3-5, 1-2-4-5, 1-3-4-5, 2-3-4-5
И последняя группа - это 1 группа из одной бочки из которой выпьют все пять рабов: 1-2-3-4-5.
Подсчитаем бочки: 16*5 + 8*10 + 4*10 + 2*5 + 1 = 211
В первый день будет продегустировано 211 бочек.
Теперь далее:
Умерли все - имеем бочку из которой выпили все, значит она с ядом.
Остался в живых один - имеем две бочки из которых он не пил. На следующий день он пьёт из одной из этих двух бочек, если остался жив то вторая с ядом, если умер то эта.
Остались в живых два - имеем 4 бочки из которых они не пили. На следующий день пьют следующим образом.
Из одной не пьют вообще, далее один пьёт из второй, второй из третьей, вдвоём пьют из четвёртой.
Соответственно исходя из того кто умер будет ясно какая бочка с ядом.
Потом остались в живых 3 - 8 бочек.
Имеем следующие комбинации (как и прежде комбинации применяются к каждой бочке). 0 - это бочка из которой никто не пьёт. Получаем:
0, 1, 2, 3, 1-2, 1-3, 2-3, 1-2-3
Осталось в живых 4 раба - это 16 бочек, следующие комбинации:
0, 1, 2, 3, 4, 1-2, 1-3, 1-4, 2-3, 2-4, 3-4, 1-2-3, 1-2-4, 1-3-4, 2-3-4, 1-2-3-4
Остались в живых все, тогда на следующий день берём оставшиеся 240 - 211 = 29, но на самом деле можно проверить 32 бочки, то есть на самом деле можно за два дня проверить 243 бочки.
Итак 32 бочки:
0, 1, 2, 3, 4, 5, 1-2, 1-3, 1-4, 1-5, 2-3, 2-4, 2-5, 3-4, 3-5, 4-5, 1-2-3, 1-2-4, 1-2-5, 1-3-4, 1-3-5, 1-4-5, 2-3-4, 2-3-5, 2-4-5, 3-4-5, 1-2-3-4, 1-2-3-5, 1-2-4-5, 1-3-4-5, 2-3-4-5, 1-2-3-4-5
Вот собственно и всё не знаю понятно объяснил или нет.
Очень понравилось решение:
вопрос - а что мешает пичкать одного раба каждые 5 минут из новой бочки? И после его смерти отсчитать назад время и указать бочку?
если пичкать каждые 5 минут, то 240 дегустаций закончатся через 20 часов, т.е. даже если последняя была с ядом, то за 4 часа до пира он умрет, указав на последнюю бочку.
Конечно это задача вряд ли имеет реальное воплощение, но если в условии указать что умирает после 24 часов то решение предложенное JAZZ вполне подходит.
По поводу задачи ранее - вот это объяснение не понял.
0. Дано множество A, в котором 100 целых чисел в пределах от 1 до 100.
1. Создаем множество B на 51 элемент, в нем все нули. Первый элемент B[0].
2. Проходим по множеству A и увеличиваем соответствующее значение в B на 1. Таким образом мы будем знать, сколько каких чисел у нас есть. Значения 52 и выше опускаем.
4. Если B[25] > 1, то у нас не меньше 2 чисел 26 и давай до свидания.
5. Перебираем 25 пар B[0] + B[50], B[1] + B[49]... B[24] + B[26], если в обоих числах пары не нули, то мы нашли ответ.
Можно еще ускорить за счет дополнительной информации в B (если увеличили B[40], тут же выставить в B[10] "я очень жду сюда число" и когда будет увеличено B[10], сразу выдать ответ). Но спорно, все-таки дополнительные операции.
Пример.
A = [1, 45, 67, 22, 55, 89, 7, 26, 13, 17, 58]
B[0] = B[44] = B[21] = B[6] = B[25] = B[12] = B[16] = 1
B[25] меньше двух, не получилось
B[0] и B[50] не устраивают.
B[1] и B[49] не устраивают.
....
B[6] > 0 и B[44] > 0. Ура, товарищи, есть числа 7 и 45, они - ответ.
Achenar если можешь объясни более подробней.

