Спор двух программистов

Задача про математику и находчивость.

Спор двух программистов

Один программист пришёл к другому и, немного выпив, говорит:

— Загадай любое натуральное число X!

— Отстань

— Нет, загадай.

— Ну, загадал.

— А теперь придумай три любых целых числа от 6 до 8 включительно.

— Придумал, и что дальше?

— А теперь умножь своё начальное число X на первое из них, прибавь второе и отними третье. Сколько у тебя получилось?

— Минутку… 164.

— Ха, а я знаю, какие ты числа загадал!

— Что, все четыре числа вычислил?!

— Ага!

— НО КАК?!

Действительно, как первому программисту удалось узнать все числа, которые загадал второй?

Обозначим три загаданных числа от 6 до 8 как A, B и C. Если мы сделаем всё, как написано в задаче, то получим равенство: A × X + B − C = 164.

Из этого получим X:

X = (164 − B + C) / A

Исключаем число 7

Если A = 7, то числитель нашей дроби должен нацело делиться на 7, потому что X не может быть дробным (по условию X — натуральное число). Числа, близкие к 164, которые делятся на 7 — это 161 и 168.

Чтобы получить 161 в числителе, числа B и C должны отличаться друг от друга на 3, а это невозможно, потому что максимальная разница равна 8 − 6 = 2.

Чтобы получить 168 в числителе, числа B и C должны отличаться друг от друга на 4, а это тоже невозможно, потому что максимальная разница равна 8 − 6 = 2.

Значит, A точно не равно 7. Запомним это.

Если число A точно не 7, то оно чётное — 6 или 8. Это значит, что числитель (164 − B + C) тоже чётный, чтобы в результате деления получилось целое число. А это возможно, если числа B и C оба чётные или оба нечётные.

Если числа B и C оба нечётные, то это возможно только в случае, если они оба равны 7. В этом случае −B + C = 0, и в числителе остаётся только 164, которое нам предстоит разделить на 6 или 8. Но 164 не делится нацело ни на 6, ни на 8, значит, они тоже не равны 7.

Исключаем одинаковые B и C

Из последнего примера мы видели, что B и С не могут быть одинаковыми в принципе, неважно, чётными или нечётными, поэтому остаются только два варианта:

B = 6, C = 8 или B = 8, C = 6.

Проверяем оставшиеся варианты

Если B = 6 и C = 8, то в числителе получается так: (164 – 6 + 8) = 166. Но 166 не делится нацело ни на 6, ни на 8 (возможные значения A), значит, этот вариант можно исключить.

Получается, что остаётся только пара B = 8 и C = 6: (164 – 8 + 6) = 162. Число 162 нацело делится только на 6: 162 / 6 = 27, значит, A = 6, а второй программист загадал число 27:

X = 27

A = 6

B = 8

C = 6

Проверяем: 6 × 27 + 8 − 6 = 164. Всё сходится.

Редактура:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

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

Вёрстка:

Мария Дронова

Соцсети:

Олег Вешкурцев

Вам может быть интересно
5 интересных задач про цифры
5 интересных задач про цифры

Подборка для тех, кто любит подумать.

medium
Андрюха, бензин и Игра престолов
Андрюха, бензин и Игра престолов

Программистская задача с математическим уклоном.

easy
Задача про безумного рекрутера и большой офис
Задача про безумного рекрутера и большой офис

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

easy
Задача про границы, где вам нужно выйти за них, чтобы её решить
Задача про границы, где вам нужно выйти за них, чтобы её решить

С первого раза у вас точно не получится

easy
Задача про тест на собеседовании
Задача про тест на собеседовании

Пришёл программист на собеседование, и началось.

medium
Задача про пять с половиной разработчиков
Задача про пять с половиной разработчиков

Считаем строки кода.

easy
Задача про цветной кубик
Задача про цветной кубик

Раскрась кубик правильно.

easy
Простая задача, которую сходу не смог решить Эйнштейн
Простая задача, которую сходу не смог решить Эйнштейн

Мы тоже не смогли, теперь ваша очередь.

hard
Решаем кодом задачу про наноботов
Решаем кодом задачу про наноботов

Вся программа — 9 строк.

easy
easy