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

Но однажды вас снова привели к королю. Он был еще злее, чем обычно: кто-то из его 12 подданных — фальшивомонетчик, заплативший налог ненастоящей монетой. Если вы определите фальшивку, вас освободят.

Перед вами лежат 12 монет. Выглядят одинаково, но подделка точно будет отличаться по весу (в ту или иную сторону).

У вас есть весы. Король по милости своей разрешил вам произвести 3 взвешивания. Также у вас есть ваш верный карандаш.

Сможете ли вы обнаружить подделку?

Посмотреть решение

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

Разложим монетки в 3 стопки. Кладем на чаши весов две любые стопки.

Дальше возможны разные варианты событий.

Вариант А. Две стопки монет весят одинаково. Следовательно, все монеты в них настоящие, а фальшивая осталась в третьей стопке.

Карандашом помечаем уже взвешенные монеты, например, ноликами.

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

А-1: Если весы в равновесии, оставшаяся одна монета из третьей стопки фальшивая.

А-2: Если монеты из третьей стопки весят больше настоящих, помечаем их плюсами. Если весят меньше — минусами.

Берем две из трех свежепомеченных монет и сравниваем их вес. Если вес равный, третья монета — фальшивка. Но что, если одна чаша перевесила? Мы ведь уже использовали все взвешивания!

Вот здесь в игру вступают метки. Если мы взвешивали монетки, помеченные плюсами, та, которая оказалась тяжелее, — фальшивая. А если монетки были помечены минусами, то фальшивая та, что легче.

Мы разобрали Вариант А, когда при первом взвешивании весы были в равновесии. Идем дальше.

Вариант Б. Одна из чаш перевесила. Помечаем монеты с перевесившей чаши плюсами, а с другой — минусами. Оставшиеся невзвешенными монеты помечаем нулями. Фальшивая монета — среди тех, что на чашах весов.

У нас осталось только 2 взвешивания, поэтому мы будем менять монеты местами. Убираем с одной чаши три монеты с плюсами и заменяем их тремя монетами с минусами (итого на чаше 3 «минуса» и 1 «плюс»). На второй чаше остается 1 монета с минусом, а к ней докладываем 3 монеты с нулями.

Теперь есть три варианта.

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

2. Чаша, которая раньше была тяжелее, теперь стала легче второй. Это значит, что три монеты со знаками «минус», которые мы переместили с одной чаши на другую, легче остальных. Мы берем любые две из них и сравниваем их друг с другом. Если весы в равновесии, фальшивка — третья монета. Если одна чаша перевешивает, фальшивка — более легкая монета.

3. После перемещения монет весы в равновесии. Это значит, что 3 монеты, убранные нами с одной чаши, тяжелее остальных. Мы сравниваем две из них между собой. Если они весят одинаково, фальшивка — третья монета. Если одна чаша перевешивает, фальшивка — более тяжелая монета.

Король удовлетворен вашим решением. Фальшивомонетчик занимает ваше место в темнице.

Марина

Share
Published by
Марина

Recent Posts

7 наилучших библиотек визуализации Python на 2024 год

Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…

3 дня ago

Как преобразовать строку в байты в Python

В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…

2 недели ago

Что такое Werkzeug?

В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…

2 недели ago

Как прибавить дни, месяцы и годы к дате в Python

При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…

3 недели ago

Социальная аутентификация в приложении на Flask

В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…

1 месяц ago

Проверка типов в Python

В этой статье мы рассмотрим, что такое подсказки типов и чем они могут быть полезны.…

1 месяц ago