8. TUZ_2-08 Вычисление общего количества блоков, необходимых для построения пирамиды из сфер


TUZ_2-08 Вычисление общего количества блоков, необходимых для построения пирамиды из сфер

ссылка на задачу 52152 (тип К)

TUZ_2-08 Вычисление общего количества блоков, необходимых для построения пирамиды из сфер.
2.08 Вычисление общего количества блоков, необходимых для построения пирамиды из сфер.
Дана пирамида, построенная из сфер. Основание пирамиды имеет размер n×m,
а каждый последующий уровень имеет ширину и длину на 1 больше по сравнению с предыдущим уровнем.
Ваша задача: написать функцию, которая принимает размеры n и m, а также высоту h
и вычисляет общее количество сфер, необходимых для построения такой пирамиды.
В табл. 2.8 показаны ожидаемые результаты для некоторых входных данных.
Таблица 2.8. Некоторые ожидаемые результаты для разных входных значений в задаче вычисления общего количества блоков, необходимых для построения пирамиды из сфер 
n, m, h Ожидаемый результат
4, 2, 2 23
28, 30, 3 2699
3, 3, 3 50
2, 7, 9 654

Алгоритм
.Для вычисления общего количества необходимых сфер алгоритм использует набор формул, учитывающих ширину и длину каждого уровня пирамиды, а также высоту пирамиды. Ниже подробно описаны шаги алгоритма.
1. Из начальной высоты h вычитается 1. Самый нижний слой считается первым слоем, а самый верхний – (h + 1)-м слоем.
Однако формула, используемая в коде, предполагает, что самый нижний слой – это 0-й слой, а самый верхний – это h-й слой.
Поэтому чтобы высота h соответствовала используемой формуле, нужно вычесть 1 из входной высоты h (т. е. h + 1–1, или h).
2. Общее количество блоков для данного уровня вычисляется с использованием следующей формулы:
                                           a = m ∗ n ∗ (h + 1).
3. К общей сумме прибавляется количество блоков, необходимых для каждого уровня пирамиды, согласно формуле
                                          a += (m + n) ∗ (h ∗ (h + 1)//2),
сумма первых h треугольных чисел, умноженная на сумму m и n.
4. Наконец, прибавляются дополнительные блоки, необходимые для создания каждого слоя пирамиды, по следующей формуле:
                                          a += (h ∗ (h + 1) ∗ (2 ∗ h + 1))//6.
5. В завершение возвращается полученное значение a. Оно равно сумме первых h квадратных чисел, деленной на 6.


time 1000 ms
memory 256 Mb

Комментарий учителя