Продолжим знакомство с решениями задач на канале
Задача
Сумма квадратов первых десяти натуральных чисел равна
12 + 22 + ... + 102 = 385
Квадрат суммы первых десяти натуральных чисел равен
(1 + 2 + ... + 10)2 = 552 = 3025
Следовательно, разность между суммой квадратов и квадратом суммы первых десяти натуральных чисел составляет 3025 − 385 = 2640.
Найдите разность между суммой квадратов и квадратом суммы первых ста натуральных чисел.
Решение
Автор решает задачу без заморочек, просто складывая числа в цикле:
Но в одной из предыдущих задач я уже приводил формулу для вычисления суммы последовательности натуральных чисел. Рассмотрим её подробнее. Чтобы её понять, надо перейти в два измерения и представить каждое число последовательности как площадь.
Если взять квадрат N*N клеток, где каждая клетка имеет площадь 1, можно представить последовательность чисел так:
Как видим, число 1 занимает 1 клетку, число 2 две клетки и т.д. Заполнив последовательность до конца, мы увидим, что её сумма (то есть площадь всех занятых клеток) равна половине площади квадрата:
И одна небольшая поправка. Диагональ квадрата проходит посередине клетки, то есть делит её площадь пополам. Следовательно, чтобы точно посчитать сумму, нужно добавить ещё половину площади клеток диагонали:
Итого: половина площади квадрата это N*N/2, половина диагонали это N/2. Формула суммы последовательности:
(N * N + N) / 2
Естественно, на ум сразу приходит мысль, что должна быть аналогичная формула для сумм квадратов. И она действительно есть, и описывается таким же геометрическим способом. Только вместо площади квадрата считается объём параллелепипеда.
Приведу выдержку из очень хорошей статьи.
http://dev.mccme.ru/~merzon/pscache/bernoulli-elem-pre.html
Как видим, вместо плоского треугольника здесь получается трёхмерная пирамида. Шесть таких пирамид составляют параллелепипед, значит интересующий нас объём заключён в 1/6 объёма параллелепипеда. Итоговая формула:
N * (N + 1) * (2 * N + 1) / 6
Все доказательства и объяснения, а также дополнительную информацию вы можете найти в вышеприведённой статье (повторюсь, она очень хорошая).
Ну и программа:
Ссылка на онлайн-компилятор языка C с текстом программы:
https://onlinegdb.com/e3dUJgDW-Y
Вся подборка задач: