Обобщённая задача о фальшивых монетах

Статья - Математика и статистика

Другие статьи по предмету Математика и статистика

Обобщённая задача о фальшивых монетах

М. Мамикон

Многим читателям хорошо известна следующая классическая задача о фальшивых монетах, поражающая тем, что она разрешима:

Задача о мешке с фальшивыми монетами

Имеются N мешков и в каждом из них достаточное количество монет. Все мешки, кроме одного, содержат одинаковые нормальные монеты, в одном же мешке все монеты фальшивые. Известен вес нормальной монеты и известно, что фальшивая монета на 1 грамм легче нормальной. Требуется при помощи одного взвешивания на весах с разновесками обнаружить мешок с фальшивыми монетами.

Вот как решается эта задача. Мешки последовательно нумеруются и из каждого мешка берется количество монет, равное номеру этого мешка. Суммарный вес всех взятых таким образом монет будет не дотягивать до веса такого же количества нормальных монет (который нам известен) на количество граммов, равное номеру именно того мешка, который содержит фальшивые монеты. (Эта задача решается правда, хитрее и в том случае, когда вес нормальной монеты неизвестен и разновесков нет. Подумайте, как.)

Раздумывая над этой задачей, я пришёл к более удивительному выводу о том, что одним взвешиванием может быть решена и более сложная задача:

Задача о нескольких мешках с фальшивыми монетами

Пусть в условиях предыдущей задачи имеется не один, а несколько мешков с фальшивыми монетами, причём их количество неизвестно. Требуется при помощи одного взвешивания на весах с разновесками обнаружить все эти мешки.

Решив и эту задачу, я осмелился на дальнейшие усложнения. Задача оказалась разрешимой при ещё более удивительных условиях:

Задача о мешках с тяжёлыми и лёгкими монетами

Среди N мешков имеются некоторое (неизвестное) количество мешков с тяжёлыми и некоторое (тоже неизвестное) количество мешков с лёгкими монетами. Лёгкая монета на 1 г легче нормальной, а тяжёлая, наоборот, на 1 г тяжелее нормальной. Требуется при помощи одного взвешивания на весах с разновесками узнать, какие мешки содержат нормальные монеты, какие тяжёлые, а какие лёгкие. (Напомним, что внутри данного мешка все монеты одинакового веса и что вес нормальной монеты известен.)

Разрешимость и этой задачи вдохновила меня на дальнейшее обобщение, которое уже напрашивалось само собой. До сих пор мы фактически рассматривали задачи о двух или трёх сортах (типах) монет, поэтому естественна следующая

Задача о мешках с разносортными монетами

Пусть имеются N мешков и в каждом достаточное количество монет. Имеются монеты разных сортов, но в каждом мешке содержатся монеты только одного сорта. Количество мешков с монетами данного сорта произвольное, и нам оно неизвестно. Монеты разных сортов отличаются друг от друга по весу, причём на целое число граммов. Вес монеты каждого сорта нам известен. Требуется при помощи одного взвешивания на весах с разновесками определить, к какому сорту принадлежат монеты в каждом мешке.

Мы предлагаем читателю попробовать самостоятельно решить предыдущие задачи, прежде чем перейти к излагаемому ниже решению обобщённой задачи о фальшивых монетах.

Решение задачи о мешках с разносортными монетами

Перенумеруем последовательно мешки от 0 до N 1. Обозначим вес самой лёгкой монеты через m. Пусть мешок под номером j содержит монеты веса m + ?j, то есть ?j определяет сорт монеты в j-м мешке. Пусть в зависимости от сорта монеты величины ? могут принимать (целые) значения 0, 1, 2, ..., меньшие k, то есть количество сортов монет равно k.

Теперь возьмем из мешка с номером j количество монет, равное k j, то есть из первого мешка одну монету, из второго k, ..., из последнего kN1 монет. Всего взятых монет будет

N1 M =?k j = 1 + k + k2 + ... + kN1 = kN 1

k 1 . j=0Их суммарный вес S на весах будет равен

N1N1 S =?(m + ?j )k j = mM +??j k j. j=0 j=0Поскольку всегда ?j < k, вторая сумма в правой части

N1 ? =??j k j = ?0 + ?1 k + ?2 k2 + ... + ?N1kN1 j=0представляет собой перевод числа ? из десятичной системы счисления (в которой работают весы) в систему счисления с основанием, равным k. В этой системе ? записывается в виде числа со следующей последовательностью цифр:

? >

?N1 ?N2 ... ?2 ?1 ?0

.

 

(*)

Мы видим, что каждая цифра этой записи показывает сорт монеты в последовательности мешков, взятой в обратном порядке. В этом состоит суть нашего решения.

Итак, из суммарного веса S всех выбранных M монет вычитаем величину Mm вес того же количества монет наилегчайшего сорта и оставшееся число ? = S Mm переводим в систему счисления с основанием k (разлагаем по степеням k, начиная со старшей). Тогда мы получим число вида (*). Его j-я цифра с конца (счёт ведётся от нуля) показывает сорт монеты ?j в мешке под номером j.

Пример

В приводимой ниже таблице указаны веса монет, содержащихся в пяти мешках. Сверху дана нумерация мешков справа налево (это и есть обратный порядок), а под мешками указаны сорта монет. Они являются искомыми.

43210 номер мешка j 11 г 12 г 10 г 12 г 10 г содержимое мешка m + ?j12020 сорт монеты ?j8127931 количество взятых монет kjВ этом случае k = 3 и количество взятых монет соответствует степеням тройки, как показано в последней строчке таблицы. Всего мы взяли M = 121 монету. Их общий вес на весах будет равен S = 1351 г. Вычитая величину Mm = 12110, получим ? = 141 г. Переводя ? в троичную систему

? = 134 + 233 + 032 + 231 + 030,

получим число 12020, последовательность цифр которого совпадает с исходной последовательностью сортов, приведённой в таблице.

Если k = 10, то надобность перевода ? из одной системы счисления