248. Юный садовод

 

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

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

 

Вход. Количество ярусов n (0 ≤ n ≤ 1000) на дереве.

 

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

 

Пример входа

Пример выхода

3

13

 

 

РЕШЕНИЕ

математика

 

Анализ алгоритма

Количество листьев справа от стебля равно 1 + 2 + …. + n (дерево содержит n ярусов). Слева от стебля число листьев такое же. И сверху еще один листок.

prb248

Количество литров воды для полива равно числу листьев в дереве. Оно равно

1 + 2 * (1 + 2 + 3 + ... + n) = 1 +  = 1  + (1 + n) * n

 

Реализация алгоритма

Совершим вычисление ответа по выше приведенной формуле.

 

scanf("%d",&n);

res = n * (n + 1) + 1;

printf("%d\n",res);

 

Реализация через указатели

 

#include <stdio.h>

 

int *n, *res;

 

int main(void)

{

  n = new int;

  res = new int;

 

  scanf("%d",n);

  *res = *n * (*n + 1) + 1;

  printf("%d\n",*res);

 

  delete n;

  delete res;

  return 0;

}

 

Реализация при помощи класса

 

#include <stdio.h>

 

class Long

{

private:

  long long value;

public:

  Long(long long value = 0) : value(value) {}

 

  void Read(void)

  {

    scanf("%lld",&value);

  }

 

  void Print(void)

  {

    printf("%lld\n",value);

  }

 

  Long operator+ (long long x)

  {

    return value + x;

  }

 

  Long operator* (const Long &x)

  {

    return value * x.value;

  }

};

 

int main(void)

{

  Long n, res;

  n.Read();

  res = n * (n + 1) + 1;

  res.Print();

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int res = n * (n + 1) + 1;

    System.out.println(res);

  }

}

 

Python реализация

 

n = int(input())

res = n * (n + 1) + 1

print(res)