За 3 взвешивания, но это довольно сложный алгоритм. Вступление. Сначала я расскажу, как найти 1 пакет из 3, зная, что он тяжелее (или легче) двух других. Это просто: сравниваем два пакета. Какой тяжелее, тот и неправильный. Если они равны, то неправильный - третий. Теперь сам алгоритм. Делим 12 пакетов на 3 группы по 4 пакета. 1 взвешивание. Сравниваем группы (1, 2, 3, 4) и (5, 6, 7, 8). 1) Если они равны, то все эти пакеты правильные, а неправильный среди (9, 10, 11, 12). 2 взвешивание. Сравниваем (1, 2, 3, 4) и (5, 9, 10, 11). Если они равны, то неправильный - 12, и третьим взвешиванием мы установим, тяжелее он или легче. Если они неравны, например, (5, 9, 10, 11) легче, то легче один из (9, 10, 11). И за одно взвешивание мы из 3 пакетов находим 1. Во Вступлении написано, каким образом мы это делаем.
Вернемся к 1 взвешиванию. 2) Если группа (1, 2, 3, 4) < (5, 6, 7, 8). Тогда в группе (9, 10, 11, 12) все пакеты - правильные. И либо один из (1, 2, 3, 4) легче, либо один из (5, 6, 7, 8) тяжелее. 2 взвешивание. Сравниваем (1, 2, 3, 5) и (4, 10, 11, 12) Если они равны, то 1, 2, 3, 4, 5 нормальные, а один пакет из (6, 7, 8) - тяжелее, чем надо. За 1 взвешивание мы его находим. Если (1, 2, 3, 5) легче, то 5 нормальный, а один из (1, 2, 3) легче. Опять-таки, за 1 взвешивание мы его находим. Если (1, 2, 3, 5) тяжелее, то или 4 легче, или 5 тяжелее, чем надо. Сравнив 4 с любым нормальным пакетом, мы это выясним.
3) Если при 1 взвешивании получилось (1, 2, 3, 4) > (5, 6, 7, 8) - это тоже самое, что 2) случай, но все знаки будут наоборот.
4) И, наконец, самое вкусное. Можно найти неправильный пакет даже из 13 пакетов! Откладываем 13-ый пакет в сторону, а с остальными 12 работаем по описанному алгоритму. Если мы находим неправильный пакет, то нам повезло. А если все три взвешивания дадут равенство, то неправильный 13. Но тогда мы уже не сможем определить, легче он или тяжелее.
1. Рекуррентное соотношение an = an – 1 + 2 вместе с условием a1 = 1 задает арифметическую прогрессию с первым членом 1 и разностью 2: 1, 3, 5, 7, … . Это последовательность нечетных чисел. 2. Рекуррентное соотношение an = 2an – 1 вместе с условием a1 = 1 задает геометрическую прогрессию с первым членом 1 и знаменателем 2: 1, 2, 22, 23, … . Это последовательность степеней двойки, начиная с нулевой степени. Кстати, иногда члены последовательности удобно нумеровать с нуля, или вообще выбирать другой нумерации. 3. Рекуррентное соотношение an = an – 1 + an – 2 вместе с условием a0 = 0, a1 = 1 задает последовательность чисел Фибоначчи: 0, 1, 1, 2, 3, 5, 8, 13, 21, … .
Вступление. Сначала я расскажу, как найти 1 пакет из 3, зная, что он тяжелее (или легче) двух других.
Это просто: сравниваем два пакета. Какой тяжелее, тот и неправильный. Если они равны, то неправильный - третий.
Теперь сам алгоритм.
Делим 12 пакетов на 3 группы по 4 пакета.
1 взвешивание. Сравниваем группы (1, 2, 3, 4) и (5, 6, 7, 8).
1) Если они равны, то все эти пакеты правильные, а неправильный среди (9, 10, 11, 12).
2 взвешивание. Сравниваем (1, 2, 3, 4) и (5, 9, 10, 11).
Если они равны, то неправильный - 12, и третьим взвешиванием мы установим, тяжелее он или легче.
Если они неравны, например, (5, 9, 10, 11) легче, то легче один из
(9, 10, 11). И за одно взвешивание мы из 3 пакетов находим 1.
Во Вступлении написано, каким образом мы это делаем.
Вернемся к 1 взвешиванию.
2) Если группа (1, 2, 3, 4) < (5, 6, 7, 8).
Тогда в группе (9, 10, 11, 12) все пакеты - правильные.
И либо один из (1, 2, 3, 4) легче, либо один из (5, 6, 7, 8) тяжелее.
2 взвешивание. Сравниваем (1, 2, 3, 5) и (4, 10, 11, 12)
Если они равны, то 1, 2, 3, 4, 5 нормальные, а один пакет из
(6, 7, 8) - тяжелее, чем надо. За 1 взвешивание мы его находим.
Если (1, 2, 3, 5) легче, то 5 нормальный, а один из (1, 2, 3) легче.
Опять-таки, за 1 взвешивание мы его находим.
Если (1, 2, 3, 5) тяжелее, то или 4 легче, или 5 тяжелее, чем надо.
Сравнив 4 с любым нормальным пакетом, мы это выясним.
3) Если при 1 взвешивании получилось (1, 2, 3, 4) > (5, 6, 7, 8) -
это тоже самое, что 2) случай, но все знаки будут наоборот.
4) И, наконец, самое вкусное.
Можно найти неправильный пакет даже из 13 пакетов!
Откладываем 13-ый пакет в сторону, а с остальными 12 работаем по описанному алгоритму.
Если мы находим неправильный пакет, то нам повезло.
А если все три взвешивания дадут равенство, то неправильный 13.
Но тогда мы уже не сможем определить, легче он или тяжелее.
2. Рекуррентное соотношение an = 2an – 1 вместе с условием a1 = 1 задает геометрическую прогрессию с первым членом 1 и знаменателем 2: 1, 2, 22, 23, … . Это последовательность степеней двойки, начиная с нулевой степени.
Кстати, иногда члены последовательности удобно нумеровать с нуля, или вообще выбирать другой нумерации.
3. Рекуррентное соотношение an = an – 1 + an – 2 вместе с условием a0 = 0, a1 = 1 задает последовательность чисел Фибоначчи: 0, 1, 1, 2, 3, 5, 8, 13, 21, … .