Готовимся к олимпиадам по программированию вместе с СПбГУ!

27.09.2022

Давайте немного разомнем свой мозг! 

Перед нами 12 монет. Среди них есть одна фальшивая, которая то ли легче, то ли тяжелее настоящих. Как за 3 взвешивания на чашечных весах определить, какая из монет поддельная и в какую сторону ее вес отличается от остальных?

(Один из вариантов решения смотрите ниже.)

Подобные задачи отлично развивают навыки, необходимые для участия в олимпиадах по программированию, — логику и умение анализировать. Конечно, кроме них вам понадобится базовое владение каким-либо языком программирования и большая любовь к этому делу. А со всем остальным поможет разобраться онлайн-программа СПбГУ «Основы олимпиадного программирования»

В ней представлен обширный набор алгоритмов и структур данных, которых будет достаточно даже чтобы взять диплом призера на финальном этапе всероссийской олимпиады школьников по информатике! А высокие результаты на соревнованиях такого уровня — это не только возможность поступить в вуз без ЕГЭ, но и важная строчка в резюме при поиске работы. Именно поэтому программа рассчитана как на школьников 5–11 классов, так и на студентов. 

 

Вариант решения:

 

Первым взвешиванием сравним две группы по четыре монеты.

Случай I: Первое взвешивание показало равенство.

Делаем вывод, что фальшивая монета находится среди четырех оставшихся (назовем их группой Ф). Тогда вторым взвешиванием мы сравним любые три монеты Ф с любыми тремя из первого взвешивания (они точно настоящие). 

Далее возможны три варианта:

  1. Если весы покажут равенство, то фальшивка — оставшаяся монета из группы Ф, и третьим взвешиванием мы сравним ее с настоящей, чтобы узнать, легче она или тяжелее.
  2. Если три монеты группы Ф оказались легче, то третьим взвешиванием сравним друг с другом две из них. Если они равны, то фальшивая — третья оставшаяся, причем она легче настоящей. Если не равны, то фальшивая та, которая легче другой. 
  3. Аналогичной логики придерживаемся, если монеты группы Ф оказались тяжелее настоящих. Только в этом случае и подделка не легче, а тяжелее остальных.

Случай II: Первое взвешивание показало неравенство.

Назовем 4 монеты на чаше, оказавшейся выше, легкими (Л), 4 монеты на второй чаше — тяжелыми (Т), а 4 монеты, которые не взвешивались — настоящими (Н), потому что среди них точно нет фальшивки. 

Взвешиваем две группы: 1) ТННН и 2) ЛТТТ.

Опять возможны три варианта:

  1. Если группы равны, то фальшивая монета находится среди трех оставшихся легких, а значит, она весит меньше остальных. Сравниваем две из них, если равны, то фальшивая третья, если не равны, то фальшивая та, что легче.
  2. Если первая группа тяжелее, то фальшивая монета — либо единственная Т из первой группы, либо единственная Л из второй. Сравниваем Т с любой настоящей. Если Т перевесила, то она и есть подделка, если нет, то подделка — Л из второй группы.
  3. Если первая группа легче, то фальшивка находится среди трех монет Т из второй группы, так как в первой группе три монеты точно настоящие, а четвертая — Т (то есть если бы она была фальшивкой, то должна была бы перевесить чашу весов). Сравниваем две из трех монет Т из второй группы. Та, что окажется тяжелее — фальшивая. Если они равны — фальшивая третья из них.
©Санкт-Петербургский государственный университет
2024 год