Миша любил
рисовать треугольники, но делал это необычным способом. Сначала он рисовал
произвольный треугольник, затем каждую его сторону делил на n равных
частей и через точки деления проводил прямые, параллельные сторонам
треугольника. В результате получалась сетка из одинаковых треугольников.
Помогите Мише
определить максимальное количество равных треугольников, которое может быть на
его финальном рисунке.
Вход. Одно целое число n
(0 < n < 2 * 109).
Выход. Выведите наибольшее
количество равных треугольников.
Пример
входа |
Пример
выхода |
2 |
4 |
комбинаторика
Рассмотрим треугольник,
каждая сторона которого разделена на n равных частей. Наибольшее
количество одинаковых фигур получится среди наименьших равных треугольников.
Посчитаем их число.
Разобьём
треугольник на n горизонтальных полос, пронумеровав их сверху вниз.
·
В последней, n-й (нижней) полосе находится n
треугольников с вершиной вверх и n – 1 треугольников с вершиной вниз.
·
В предпоследней, (n – 1)-й полосе – n – 1
треугольник с вершиной вверх и n – 2 треугольника с вершиной вниз.
Продолжая
рассуждение, получаем:
·
число треугольников с вершиной вверх равно n + (n
– 1) + (n – 2) + … + 2 + 1;
·
число треугольников с вершиной вниз равно (n – 1) + (n – 2) + … + 2 + 1.
Таким образом,
общее количество наименьших равных треугольников равно сумме этих двух величин:
2 * (n + (n
– 1) + (n – 2) + … + 2 + 1) – n = = n2
Пример
Для n = 1, 2 и 3 количество
равных треугольников составляет соответственно 1, 4 и 9. Например, при n
= 3 ответ равен (1 + 2 + 3) + (1 + 2) = 9.
Читаем входное значение
n.
scanf("%lld",&n);
Вычисляем и
выводим ответ.
res = n * n;
printf("%lld\n",res);
import java.util.*;
class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
long n = con.nextLong();
long res = n * n;
System.out.println(res);
con.close();
}
}
Читаем входное значение
n.
n = int(input())
Вычисляем и
выводим ответ.
res = n * n
print(res)