Логические и математические задачи с собеседований
Разомнем мозг! В этой статье собраны логические и математические задачи, которые нередко встречаются на собеседованиях и могут попасться вам.
Основные проблемы, которые часто возникают в процессе интервью, не в отсутствии опыта или подготовки. Даже по-настоящему опытный разработчик может легко "споткнуться" о решение какой-нибудь хитро скроенной задачки. Поэтому мы поговорим не о том, как составлять резюме и выгодно презентовать себя. Фокусируемся на решении нетривиальных задач, которые включают в себя решение логического и/или математического характера.
"Крепкий орешек"
Помните загадку из третьего фильма? Если нет, то вспоминайте, так как этим вопросом любят потчевать в Microsoft.
Задача:
Есть 2 пустых ведра: первое объемом 5 л, второе - 3 л. Как с их помощью отмерить 4 литра воды?
[spoiler title='Ответ:' style='default' collapse_link='true']Сперва наполните пятилитровое ведро. Далее перелейте из него воду в трехлитровое так, чтобы в пятилитровом осталось 2 л воды (полностью заполнив трехлитровое). Вылейте из меньшего ведра всю воду и перелейте в него оставшиеся в большем 2 л. Снова наполните пятилитровое и перелейте один литр в трехлитровое (оно как раз заполнится): так в большем ведре останется 4 л воды.[/spoiler]
Онлайн-курc по математике для Data Science
На курсе вы познакомитесь с основными моделями машинного обучения, научитесь выбирать и применять подходящие tree-based модели.
Программа занятий:
- Школьная математика: от теории множеств до производной и интеграла.
- Математический анализ: от числовых последовательностей до теории меры и интеграла Ламбера.
- Линейная алгебра: от матриц до билинейных форм.
- Комбинаторика: правила комбинаторики, множества и сочетания.
- Теория вероятностей и математическая статистика: от случайных событий до регрессии.
- Машинное обучение: Word2vec, градиентный спуск, KNN и т. д.
Баночки с таблетками
Задача:
Есть двадцать баночек с таблетками. Почти во всех таблетки весят по 1 г, и только в одной - по 1,1 г. У нас есть точные весы, с помощью которых нужно определить баночку, каждая таблетка которой весит 1,1 г. Как это сделать, если можно взвесить только 1 раз?
[spoiler title='Ответ:' style='default' collapse_link='true']Давайте абстрагируемся и представим, что у нас 2 баночки, в одной из которых таблетки более тяжелые. Даже если мы поставим их обе на весы, мы ничего не узнаем. Но если мы достанем из одной баночки 1 таблетку, из другой - 2 и положим их на весы - вот тогда-то и откроется истина :) В данном случае вес будет 2,1 или 2,2 (в зависимости от того, сколько каких таблеток мы взяли). Так и определяем нашу баночку.
Вернемся к задаче. Из каждой баночки нужно доставать разное количество таблеток. То есть из первой баночки 1 таблетку, из второй - 2, из третьей - 3 и так далее. Если бы каждая таблетка весила по 1 г, общий вес составил бы 210 г. Но поскольку в одной из баночек таблетки тяжелее, вес будет больше. Для определения нужной баночки просто воспользуемся формулой:
№ тяжелой баночки = (вес - 210) * 10
[/spoiler]
Но на этом интересные логические и математические задачи не заканчиваются. Идем дальше!
Свидание
Задача:
Парень и девушка договорились встретиться ровно в 21:00. Проблема в том, что у обоих часы идут неправильно. У девушки часы спешат на 2 мин., но она думает, что они на 3 мин. отстают. У парня же часы отстают на 3 мин., но он считает, что они на 2 мин. спешат. Кто из пары опоздает на свидание?
[spoiler title='Ответ:' style='default' collapse_link='true']Ничего сложного: чистая математика. Если у девушки часы спешат, а она думает, что они отстают, то поторопится и придет на 5 мин. раньше. Парень, наоборот, посчитает, что у него еще 5 минут времени в запасе, отчего на эти самые 5 мин. опоздает.[/spoiler]
Считаем вес курицы
Задача:
Длина курицы при измерении от головы до хвоста составит 45 см, а вот от хвоста до головы (если измерять вдоль брюха) - 53 см. По статистике плотность курицы на единицу боковой проекции составляет 8 г/см2. Усредненная высота курицы, если мерить ее вдоль боковой поверхности, - 21 см. Сколько весит килограмм курицы?
[spoiler title='Ответ:' style='default' collapse_link='true']Килограмм курицы весит 1 килограмм.[/spoiler]
Да, математические задачи с подвохом тоже встречаются :)
Книжные страницы
Задача:
Книга содержит N страниц, которые пронумерованы стандартно: от 1 до N. Если сложить количество цифр (не сами числа), что содержатся в каждом номере страницы, выйдет 1095. Так сколько в книге страниц?
[spoiler title='Ответ:' style='default' collapse_link='true']Каждый номер страницы имеет цифру на месте единицы, так что есть N цифр, расположенных на месте единицы. А вот после 9 начинаются двухзначные числа, и нам нужно добавить N-9 цифр. То же самое с трехзначными, которые начинаются после 99: добавляем N-99 цифр. Продолжать нет смысла, так как сумма не предполагает более 999 страниц. Получаем следующую формулу:
N + (N-9) + (N-99) = 1095
Далее просто решаем:
3N - 108 = 1095
3N = 1203
N = 401
Итого 401 страница.[/spoiler]
Посчитать в уме
Задача:
Математические задачи на собеседованиях бывают и довольно простыми, но зачастую только на первый взгляд. Попробуйте в уме разделить 30 на 1/2 и прибавить 10. Каким будет результат?
[spoiler title='Ответ:' style='default' collapse_link='true']Первое решение, которое обычно приходит на ум, ошибочно:
30/2 + 10 = 25
Если мы делим на дробь, ее нужно переворачивать и производить умножение:
30*2 + 10 = 70
[/spoiler]
Цифра 3
Задача:
Сколько целых чисел в диапазоне 1-1000 вмещают в себя цифру 3? При подсчете нельзя пользоваться компьютером.
[spoiler title='Ответ:' style='default' collapse_link='true']Запомните, что нам нужно учесть просто факт содержания в числе тройки. Если, например, это 33 - мы не считаем цифру 2 раза. В числе должна быть по крайней мере одна тройка, чтобы его учесть. Например, числа в диапазоне 300-399 дают нам сразу 100 чисел. Еще 10 мы получаем от 30-39. То же касается 130-139, 230-239, etc. Десяток этих чисел уже был учтен при подсчете 330-339, так что убираем его и получаем:
100 + 90 = 190
А еще есть группа чисел (их 100), которые заканчиваются на тройку: 2-993. Мы исключаем из нее такие 10 чисел, как 303, 313 ... 393 (они учтены ранее). Получаем еще +90 чисел. У 1/10 из этих 90 на месте десяток также расположилась тройка: 33, 133 ... 933. Убираем еще 9, оставляя 81 число. Дальше простая математика:
100 + 90 + 81 = 271
А вот более изящное решение данной задачи. Сперва мы считаем, сколько чисел не включает в себя тройку (на каждое из 3-х мест ставится 9 цифр, которые не тройки):
9 * 9 * 9 = 729
1000 - 729 = 271
[/spoiler]
Ну что, размялись? Надеемся, вам понравились собранные логические и математические задачи. Если этого мало, можете заглянуть сюда + ниже вы найдете еще больше задач, специально подобранных Библиотекой программиста :)