На собеседованиях в ИТ-компании редко дают задачи, которые требуют больших временных и умственных затрат. Чаще это задачи, проверяющие ваши логику и смекалку.
Вот, например, задача, которую вполне может дать учитель в седьмом классе для проверки усвоения материала.
Смотрите, надо найти значения суммы и разности квадратов целых натуральных чисел от единицы до ста: 1² − 2² + 3² − 4² + 5² − 6² + … + 99² − 100² =?
Решить эту задачу, как и практически любую другую можно несколькими способами. Первый способ — в лоб. Это долго, скучно, сложно, и так вы собеседование точно не пройдёте. Второй способ — немного подумать, вспомнить школьную математику за 7 класс и быстренько, минуты за две выдать правильный ответ. Третий способ — программистский, быстренько написать код, запустить его и посмотреть результат.
Первый способ я разбирать не буду. Если у вас есть лишние полчаса-час, то можете попробовать сами. А вот второй способ — это как раз то, чего ждут от вас на собеседовании. В качестве подсказки, давайте вспомним известную задачу о том, как быстро найти сумму всех натуральных чисел от 1 до 100: 1 + 2 + 3 + ... + 99 + 100 = ?
Решение задачи-наводки
Давайте обратим внимание на то, что, если сложить 1 и 99, получится 100. И если сложить 2 и 98, тоже получится 100. И если сложить 2 и 97 получится также 100. И таких пар чисел, которые в сумме дают сотню, у нас тут целых 49. Без пары остаются только числа 50 и 100. Таким образом у нас получается: 49•100+100+50 = 50•100+50 = 5050. Всё, задачу решили.
В задаче, которую нам нужно решить с суммой и разностью квадратов, идея очень похожая, но её надо доработать. Остановитесь на пару минут, возьмите листок бумаги и карандаш, подумайте, а когда надумаетесь, читайте решение ниже. Но не подглядывайте, пока не подумаете.
Решение
Ещё раз внимательно смотрим на то, что нам дано и замечаем, что мы имеем много сложенных вместе разностей квадратов: (1² − 2²) + (3² − 4²) + (5² − 6²) + … + (99² − 100²). Обращаю внимание на то, что мы тут ещё вообще ничего не делали и не преобразовывали, а просто расставили скобочки, чтобы разности квадратов были заметнее.
А теперь, вспоминая формулу для разности квадратов — a²−b² = (a - b) (a + b) — распишем каждую из пятидесяти скобочек: (1 − 2) (1 + 2) + (3 − 4) (3 + 4) + … + (99 − 100) (99 + 100).
Каждая из скобочек с разностью равна минус единице, потому что числа идут по порядку возрастания. Вынося этот «минус один» за скобки, получаем уже знакомую нам сумму всех натуральных чисел от единицы до ста, помноженную на -1: (−1)•(1 + 2 + 3 + 4 + … + 99 + 100) = -5050.
Вот и вся задача. Если было интересно, то не забывайте поставить лайк и подписаться на мой Телеграм. А вот ещё несколько интересных задач: