Найти тему
Журнал «Код»

Школьная задача, которую дети решают без калькулятора, а взрослые — нет

Оглавление

А вы сможете?

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

Теперь задача — найти значение суммы и разности квадратов от 1 до 100:

1² − 2² + 3² − 4² + 5² − 6² + … + 99² − 100² =?

Решение с математикой

Очевидно, что можно посчитать значение каждого квадрата, а потом вычитать и складывать все значения по очереди. Но это долго и так собеседование мы точно не пройдём.

Используем математическую хитрость и посмотрим на пример с точки зрения разности квадратов. Для начала расставим скобки:

(1² − 2²) + (3² − 4²) + (5² − 6²) + … + (99² − 100²)

Мы никак не изменили значение выражения, но у нас появилась сгруппированная разность квадратов. Вспомним формулу разности квадратов:

x² − y² = (x − y) (x + y)

Применим её к каждому выражению в скобках:

(1 − 2) (1 + 2) + (3 − 4) (3 + 4) + … + (99 − 100) (99 + 100)

В каждой скобке, где есть минус, значение разности равно −1, потому что числа идут по порядку и в каждой паре второе число больше первого на единицу. Получается, что первая скобка в каждом произведении равна −1:

−1(1 + 2) +(−1) (3 + 4) + … + (−1) (99 + 100)

Вынесем общий минус за скобки:

−1 (1 + 2 + 3 + 4 + … + 99 + 100)

Получается, нам нужно найти сумму от 1 до 100 и умножить её на −1. Для этого вспомним такую формулу:

сумма чисел от 1 до N равна произведению N на N+1, поделённого пополам.

В нашем случае сумма от 1 до 100 считается так:

(100 × 101) / 2 = 10100 / 2 = 5050

Умножаем это значение на −1 и получаем общий ответ: −5050

Решение с кодом (если успеете быстро его набрать)

Хитрые программисты могут потратить эту пару минут не на математику, а на организацию простого цикла:

JavaScript
JavaScript

gist:ea533f93d38e92d171fa6b8a7c55e8fe

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