e-olimp 248. Юный садовод

Задача взята с сайта e-olymp.com.

Условие задачи

Мама попросила Васю полить все молодые деревца в саду. Вася знает, что пока деревья маленькие, их надо очень хорошо поливать. А вот сколько поливать — неизвестно. Но Вася — очень умный мальчик. Он внимательно прочитал весь учебник ботаники для средней школы и выяснил, что полив прямо пропорционален количеству листьев на дереве. Для хорошего роста деревьев достаточно выливать под дерево ежедневно по одному литру воды на каждый лист.

К счастью Васи оказалось, что листья на деревьях растут ярусами, причем на верхнем ярусе два листа, на втором — четыре, на следующем — шесть, и так далее, на каждом последующем ярусе на два листа больше по сравнению с предыдущим. А на самой верхушке растет еще один листик. Хитрый Вася послал младшую сестренку Машеньку подсчитать количество ярусов на каждом дереве, а Вас просит написать программу, которая для каждого дерева вычислит количество литров воды для его полива.

Входные данные

Количество ярусов [latex] n  (0 ≤ n ≤ 1000) [/latex] на дереве.

Выходные данные

Вывести количество литров воды для полива этого дерева.

Тесты

Входные данные Выходные данные
1. 2 7
2. 5 31
3. 0 1
4. 70 4971

Код программы

Решение

Как можно было заметить, по условию нашей задачи, на каждом следующем уровне на 2 листа больше чем на предыдущем. Поэтому для ее решения мы можем воспользоваться формулой суммы [latex]n[/latex]-первых членов арифметической прогрессии, и в конце расчетов добавить к полученной сумме единицу (тот самый листик с верхушки). Тогда подставив [latex] d = 2 , a_1 = 2, n = n [/latex]. Мы получим формулу [latex] S_n = \frac{2a_1 + (n — 1)d}{2} \cdot n \to n^2 + n [/latex].

 

Оригинальное решение: cpp.mazurok.com.
Рабочий код для тестирования на try.haxe.org: Try Haxe !

Добавить комментарий