Лучшие задачи, где потребуется нестандартное мышление
easy

Лучшие задачи, где потребуется нестандартное мышление

Мыслить нестандартно — полезно

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

Хитрый электрик и немаркированные провода

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

Под водой проложили 49 проводов, но они оказались одного цвета, а подрядчик забыл их промаркировать. Позвали электрика, чтобы он пронумеровал все провода на левом и правом берегах так, чтобы числа совпадали. Ему дали катер, чтобы пересечь реку сколько угодно раз, линию с током на левом берегу и мультиметр, который показывает напряжение в проводе. И электрик справился.

— Ну, он, наверное, пересёк реку минимум 49 раз.

— Нет, ему хватило двух — туда и обратно. А потом он просто долго сидел на правом берегу и смотрел на воду.

— Но как?

На исходном берегу электрик подал напряжение на случайный провод и пометил его как №1. Все остальные 48 проводов он попарно соединил между собой так, чтобы на левой стороне получился один провод под напряжением и 24 пары. После этого электрик отправился на правый берег (первая поездка).

Приплыв на место, он с помощью мультиметра нашёл провод под напряжением — это провод № 1, и он его так и пометил. А дальше начинается электрическая магия.

Электрик взял провод № 1 под напряжением, соединил его с любым другим проводом и подписал его как № 2. Мы помним, что на левом берегу провода соединены попарно, значит, провод № 2 с той стороны с чем-то соединён, а, значит, ток вернулся обратно и появился в новом проводе, который электрик подписал как № 3.

Дальше всё то же самое: электрик взял провод с током № 3, соединил его с любым оставшимся проводом и подписал новый провод как № 4. Электрик помнил про пары на том берегу, поэтому нашёл провод, в котором снова появился ток, и подписал его как № 5. Таким же образом он соединил оставшиеся провода и нумеровал все жилы на правой стороне от 1 до 49. Сделав это, электрик вернулся на левый берег (вторая поездка).

Осталось самое интересное — как на этом берегу проставить те же самые числа на проводах. Электрик знал, как выглядит провод № 1, потому что он его подписал, но не знал, как выглядит провод № 2.

Но он помнил, что провод № 1 соединён на том берегу с проводом № 2, который на этом берегу соединён с проводом № 3. Значит, задача электрика в том, чтобы найти это соединение на левом берегу. Для этого он разъединял по очереди все соединения и смотрел, пропал ли ток во всех остальных проводах. Если не пропал во всех остальных — значит, разъединил не ту пару и её надо вернуть на место. А если пропал — значит, электрик нашёл соединение проводов № 2 и № 3. При этом неизвестный провод, который остался под напряжением, будет провод № 2, а тот, с которым он соединялся, будет № 3.

После этого электрик соединил подписанную пару обратно и начал искать следующую точку, которая отключает все остальные жилы, — это будут провода № 4 и № 5. Действуя по этой схеме, хитрый электрик подписал все оставшиеся провода. Провайдеру осталось только разъединить пары на каждом берегу.

Айтишники, учёные и поездка на остров

Все оценили находчивость электрика, и кто-то спросил, были ли ещё забавные истории с тем островом.

— Были. Нужно было переправить на остров шесть сотрудников: трёх айтишников и трёх учёных. В катере помещалось всего двое, причём айтишники умели им управлять, а учёные — нет. И было важно не оставлять на одном берегу больше учёных, чем айтишников, иначе они взорвали бы мозг айтишникам разговорами о предстоящих проектах, а тем нужно думать над своей работой.

— И как, переправили без происшествий?

— Конечно! А потом купили катер побольше, чтобы больше так не заморачиваться.

— А как переправили?

Для первой поездки есть четыре варианта:

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

Значит, первым рейсом пара на остров отправляется пара «учёный-айтишник». Теперь катер надо как-то отправить назад. Но так как учёный не умеет им управлять, он остаётся на берегу, а айтишник — возвращается. Учёных на исходном берегу получается меньше, они не взрывают никому мозг.

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

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

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

Теперь нужно сделать выбор, кто поедет на этот раз. Можно отправить снова учёного и айтишника, но тогда на левом берегу окажутся три учёных. И безопасно перевезти остальных айтишников поодиночке уже не получится — учёные всегда будут в большинстве. Значит, остаётся только один вариант: отправить в путь двух айтишников. В итоге на том берегу всех поровну и всё проходит спокойно.

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

Назад отправим одного айтишника. Чтобы не выходить из катера, он позовёт в него учёного (например, вопросом «Над какой вакциной вы сейчас работаете?») и вернётся с ним обратно на остров.

Точно так же забираем оставшегося на левом берегу учёного. И в итоге вся компания оказывается на острове, и никто никому не взорвал мозг.

Находчивый айтишник и тысяча пробирок

— Ох уж эти учёные…

— И не говори! Была у нас ещё история…

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

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

— А что за способ?

Чтобы найти пробирку с ядом за один день, нам надо призвать на помощь двоичную систему счисления. Но для начала разберёмся с привычной — десятичной.

Десятичная система счисления

Она самая знакомая из всех, и мы ей пользуемся каждый день. В её основе — 10 цифр, от 0 до 9, поэтому она и называется десятичной.

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

Только что мы разложили число на разряды: 4 — это разряд сотен, 3 — разряд десятков, 6 — разряд единиц. Получается, что:

436 = (4 × 100) + (3 × 10) + (6 × 1)

436 = (4 × 10²) + (3 × 10¹) + (6 × 10 в нулевой степени)

Получается, что наша десятичная запись числа — это просто краткая форма записи длинного выражения, где какие-то числа умножаются на десятки в разных степенях.

Десятичная система счисления

Двоичная система

Двоичная система — это то же самое, только вместо десятки — двойка. Вместо степеней десятки мы используем степени двойки. Вместо десяти цифр от 0 до 9 мы используем две: 0 и 1.

Чтобы перевести числа из двоичной системы счисления в десятичную, нужно то же самое, что и раньше: возводить двойку в степень разряда и умножать на 0 или 1. Рассмотрим на примере:

Двоичная система

Любое десятичное число можно представить в виде двоичного, и наоборот. Теперь попробуем использовать это знание в решении задачи.

Битовая глубина

У нас 1000 пробирок. Запишем это число в двоичной системе счисления:

1000 в десятичной = 1111101000 в двоичной

Это максимальное число, которое нам понадобится при нумерации, и оно состоит из 10 нолей и единиц. Получается, что битовая глубина решения этой задачи — 10. А у нас как раз 10 мышей. Это и будем использовать при расчётах.

Немного магии

Зная, что у нас 10 бит на число, пронумеруем каждую пробирку таким образом:

1 — 0000000001

2 — 0000000010

3 — 0000000011

4 — 0000000100

...

999 — 1111100111

1000 — 1111101000

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

А теперь начинается магия. Берём каждую пробирку и смотрим, на каких местах стоят единицы. Мышам в этих клетках даём каплю вещества:

первая пробирка: 0000000001 — даём каплю мыши в самой правой клетке

вторая пробирка: 0000000010 — даём каплю мыши во второй клетке справа

третья пробирка: 0000000011 — даём по капле двум мышам из первой и второй клеток справа

четвёртая пробирка: 0000000100 — даём каплю мыши в третьей клетке справа

...

999 пробирка: 1111100111 — даём по капле мышам из первых пяти клеток слева, пропускаем две клетки, дальше капаем трём оставшимся

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

Например, наутро мы заметили, что шесть мышей слева и одна справа живы, остальные три мертвы. Запишем это в двоичной системе:

0000001110

Переведём вручную или на калькуляторе это в десятичную систему и получим число 14. Это и есть номер нашей пробирки с ядом.

В чём секрет

Секрет в том, что комбинация нолей и единиц уникальна для каждой пробирки. И раз мы даём по капле тем мышам, которые соответствуют единице, то, если в них будет яд, помечать их тоже надо единицами, чтобы восстановить картину. Комбинация погибших мышей из-за своей уникальности и укажет нам на номер пробирки с ядом.

Программисты и средняя оценка

— Да таким программистам надо премии выдавать!

— Им и выдают, только как-то странно. Смотрите сами.

Первый программист выполнил в марте 8 задач из 10, а второй —  5 из 6. Понятно, что 5/6 > 8/10. В апреле первый программист закрыл 4 задачи из 10, а второй — 6 из 14. Здесь тоже понятно, что 6/14 > 4/10. Но получается, что за два месяца у каждого из них было по 20 задач, и первый сделал 12, а второй 11. И второму начислили премию больше, чем первому. Как такое возможно: сделать больше задач за весь период, но проигрывать каждый месяц?

— Так ведь всё очень просто!

— Почему?

Всё противоречие здесь возникает оттого, что мы складываем задачи в одно целое и не учитываем степень нагрузки по ним.

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

Если бы каждый из программистов выполнял норму в каждом месяце, то процент выполнения за 2 месяца был бы 200% — 100% за прошлый месяц и 100% за этот. Запомним это.

За март первый программист выполнил норму по задачам из трекера на 8/10, а за апрель — на 4/10. Теоретически он должен был сделать 20 задач, но сделал меньше. Получается, что всего за два месяца первый программист выполнил такую норму:

8/10 + 4/10 = 12/10 = 1,2

Умножим это на 100%, чтобы получить процент выполнения за 2 месяца у первого программиста: 

1,2 × 100% = 120% из 200%.

Теперь посчитаем, как поработал второй программист. Для этого приведём дроби к общему знаменателю перед сложением:

5/6 + 6/14 = 70/84 + 36/84 = 106/84 = 1,26 из 2.

Умножим это на 100%, чтобы получить процент выполнения за 2 месяца у второго программиста: 

1,2 × 100% = 126% из 200%

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

Старые мониторы и лишняя тысяча

— О, у меня тоже была история с неправильным подсчётом, зацените.

Недавно решил перейти с двух мониторов на три и купить новые одинаковые, а старые продать. Прикинул, что они стоят 50 тысяч, и попросил знакомого помочь с продажей — у самого времени не было. А он продал их не за 50, а за 55 тысяч: каждый покупатель заплатил по 27 500 ₽ — на 2 500 ₽ больше, чем нужно.

И вот приходит ко мне этот знакомый и рассказывает о такой удачной продаже. Я попросил его вернуть по 2 500 ₽ каждому покупателю, но он снова схитрил — отдал им по тысяче, а три оставил себе. И вот знакомый считает: «26 500 + 26 500 = 53 000 — заплатили за мониторы, и ещё 3000 у меня осталось. Итого 53 000 + 3000 = 56 000. А продал я за 55 000. Любопытно».

— Ну и откуда взялась лишняя тысяча?

Ошибка в том, что знакомый складывал суммы от разных сделок. Правильные вычисления будут выглядеть так:

27 500 + 27 500 = 55 000 — получено после продажи мониторов

5000 — прежний владелец попросил вернуть покупателям, из них знакомый:

2000 — отдал

3000 — забрал себе

Как видим, лишней тысячи нигде нет.

Есть и другой способ: найти ошибку в вычислениях знакомого.

26 500 + 26 500 = 53 000 ₽ — заплатили покупатели за мониторы, хотя должны были заплатить 50 000 ₽, как хотел прежний владелец.

53 000 − 50 000 = 3000 ₽ — лишние деньги, которые знакомый и взял себе.

Ошибка в вычислениях в том, что нужно эти три тысячи не прибавлять, а отнимать, тогда получится нужная сумма в 50 000 ₽, которую получил прежний владелец мониторов.

Сложный выбор и гнутая монетка

— Хорошо посидели! Как же не хочется на работу… Может, взять выходной за свой счёт?

— Держи монетку, подбрось, и пусть рассудит случай.

— Но монетка погнута!

— И что?

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

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

— Какой?

Из-за того, что одна сторона выпадает чаще другой, мы не можем использовать одно подкидывание для определения, идти на работу или взять выходной. Но что, если подбросить монету не один, а два раза подряд? Смысл в том, чтобы найти такие комбинации, которые дают равные шансы на победу.

Если подкинуть монетку два раза, то у нас получатся такие варианты:

  1. Орёл — Орёл (ОО)
  2. Орёл — Решка (ОР)
  3. РО
  4. РР

Первый вариант мы отбрасываем сразу — у него самый высокий шанс выпадения. Вариант с двумя решками тоже не подходит — он выпадет реже всего.

Теперь посмотрим, что с шансами выпадения сначала орла, а потом решки и наоборот. Для этого перемножим вероятности выпадения орла (2/3) и решки (1/3) в разной очерёдности:

ОР: ⅔ × ⅓ = 2/9

РО: ⅓ × ⅔ = 2/9

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

Редактор:

Инна Долога

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy