Решение задачи Шестиугольник Геральда с Codeforces

С пояснением   Просмотров: 26


Геральду на день рождения подарили очень любопытный шестиугольник. Именинник выяснил, что все углы шестиугольника равны . Затем он измерил длины его сторон и обнаружил, что каждая из них равна целому числу сантиметров. На этом свойства самого шестиугольника закончились и Геральд решил на нём порисовать.

Он нарисовал несколько отрезков, параллельных сторонам этого шестиугольника, которые разбили шестиугольник на правильные треугольники со стороной в 1 сантиметр. Теперь Геральду интересно, сколько у него получилось треугольников. Но их так много, что Геральд всё время сбивается со счёта. Помогите имениннику посчитать треугольники.

Код

#include <bits/stdc++.h>
using namespace std;

int main() {
	int i,j,k,p,q;
	int a,b,c,d,e,f;
	cin>>a>>b>>c>>d>>e>>f;
	cout<<(a+b+c)*(a+b+c)-a*a-c*c-e*e;
	return 0;
}

         

Администратор Photo Автор: Администратор


Сперва заметим, что если правильный треугольник с целой стороной k отрезками, параллельными сторонам, разделить на правильные треугольники со стороной 1 (тут появляется картинка), то площадь большого треугольника будет в k 2 раз больше площадей маленьких треугольничков и, следовательно, треугольник окажется разделён ровно на k 2 единичных треугольничков.

Далее, заметим, что если к сторонам a 1, a 3 и a 5 шестиугольника пририсовать по правильному треугольнику со сторонами a 1, a 3 и a 5 соответственно (и тут появляется ещё одна картинка), то получится большой правильный треугольник со стороной a 1 + a 2 + a 3. Таким образом, площадь исходного шестиугольника равна (a 1 + a 2 + a 3)2 - a 1 2 - a 3 2 - a 5 2.


Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться