Skip to content

Instantly share code, notes, and snippets.

@denis-kalinin
Last active May 17, 2019 08:03
Show Gist options
  • Save denis-kalinin/1ba8f97cf87b904a46e1df34116dcb89 to your computer and use it in GitHub Desktop.
Save denis-kalinin/1ba8f97cf87b904a46e1df34116dcb89 to your computer and use it in GitHub Desktop.
Есть 12 монет - 1 фальшивая. Найди её за 3 взвешивания на весах балансирах.

Условие: Есть 12 монет - 1 фальшивая. Найди её за 3 взвешивания на весах балансирах.

Уточнение: мы не знаем, тяжелее или легче подлиной фальшивая моентаю

Алгоритм

Разбиваем на 3 кучи по 4 монеты, худший случай: 4л < 4т (в остатке 4о - оригинала) Маркируем монеты условно на легкие и тяжелые ("л" и "т").

Второе взвешивание: Делем две кучи. Левая (1оргинал 1легая 1тяжелая), правая ( 1легкая 2 тяжелых).

Возможные варинаты и их иcход:

1о 1л 1т == 1л 2т (в остатке 1л 2т - 3 взвешивае - из остатка сравниваем 2т, что тяжелее фальшивая, иначе легкая из остатка)

1о 1л 1т < 1л 2т ( фальшивая либо 1л(левая) либо 2т (правые) - 3 взвешивание - сравниваем 2т правые, что тяжелее фалшивая, иначе 1л(левая))

1о 1л 1т > 1л 2т ( фальшивая либо 1т(левая) либо 1л(правая) - 3 взвешивание - сравниваем любую с оригиналом)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment