Задача Юный садовод
Условие
Мама попросила Васю полить все молодые деревца в саду. Вася знает, что пока деревья маленькие, их надо очень хорошо поливать. А вот сколько поливать — неизвестно. Но Вася — очень умный мальчик. Он внимательно прочитал весь учебник ботаники для средней школы и выяснил, что полив прямо пропорционален количеству листьев на дереве. Для хорошего роста деревьев достаточно выливать под дерево ежедневно по одному литру воды на каждый лист.
К счастью Васи оказалось, что листья на деревьях растут ярусами, причем на верхнем ярусе два листа, на втором — четыре, на следующем — шесть, и так далее, на каждом последующем ярусе на два листа больше по сравнению с предыдущим. А на самой верхушке растет еще один листик. Хитрый Вася послал младшую сестренку Машеньку подсчитать количество ярусов на каждом дереве, а Вас просит написать программу, которая для каждого дерева вычислит количество литров воды для его полива.
Входные данные
Количество ярусов [latex] n(0≤n≤1000)[/latex] на дереве.
Выходные данные
Вывести количество литров воды для полива этого дерева.
Тесты
Входные данные | Выходные данные | |
1. | 10 | 111 |
2. | 0 | 1 |
3. | 5 | 31 |
4. | 123 | 15253 |
Линейное вычисление
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { int n, res, a1=2, d=2; cin >> n; res = ((2 * a1 + d * (n - 1)) / 2) * n; cout << (res + 1); return 0; } |
Решение
Что бы решить эту задачу, необходимо найти сумму арифметической прогрессии, где [latex] a_1=2[/latex] и [latex] d=2 [/latex] и добавить к ней единицу (лист с верхушки). Для этого можно воспользоваться формулой суммы арифметической прогрессии $S_n=\frac{2a_1+d(n-1)}{2}n$
Ссылки
Ссылка на e-olymp
Ссылка на ideone