codeforces 559A(Gerald's Hexagon)

Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

Description

Gerald got a very curious hexagon for his birthday. The boy found out that all the angles of the hexagon are equal to . Then he measured the length of its sides, and found that each of them is equal to an integer number of centimeters. There the properties of the hexagon ended and Gerald decided to draw on it.

He painted a few lines, parallel to the sides of the hexagon. The lines split the hexagon into regular triangles with sides of 1 centimeter. Now Gerald wonders how many triangles he has got. But there were so many of them that Gerald lost the track of his counting. Help the boy count the triangles.

Input

The first and the single line of the input contains 6 space-separated integers a1, a2, a3, a4, a5 and a6 (1 ≤ ai ≤ 1000) — the lengths of the sides of the hexagons in centimeters in the clockwise order. It is guaranteed that the hexagon with the indicated properties and the exactly such sides exists.

Output

Print a single integer — the number of triangles with the sides of one 1 centimeter, into which the hexagon is split.

Sample Input

Input

1 1 1 1 1 1

Output

6

Input

1 2 1 2 1 2

Output

13

Hint

This is what Gerald‘s hexagon looks like in the first sample:

And that‘s what it looks like in the second sample:

程序分析:

题目大意:给出一个等角六边形的六条边长(都为整数厘米),按与边平行划线,问最多会分成多少个边长为1的小三角形

六边形的全部都被分为了小三角形,所以用六边形的面积/三角形的面积就是三角形的数量

六边形的面积:设六条边长为a[1]到a[6]

等角六边形的对边平行,连接两个对边的定点,就得到一个梯形和两个三角形,梯形的上底是a[4],下底是a[1],高由划红线的地方算出a[3]*sin(PI/3.0)+a[2]*sin(PI/3.0),这样就可以算出梯形的面积,其余的两个三角形的面积为a[2]*a[3]*sin(PI/3.0)/2, a[5]*a[6]*sin(PI/3.0)/2

小三角形的面积:1*1*sin(PI/3.0)/2.0 ;所以这个题目的重点就是找到计算公式就OK了。

程序代码:

#include<stdio.h>
double a[7] ;
int main() {
    int i ;
    double s ;
    for(i = 1 ; i <= 6 ; i++)
        scanf("%lf", &a[i]) ;
    s = (a[1]+a[4])*(a[2]+a[3]) + a[2]*a[3]+ a[5]*a[6];
    printf("%d\n", (int)(s+0.5)) ;
    return 0 ;
}  

codeforces 559A(Gerald's Hexagon)

时间: 2024-10-12 08:52:59

codeforces 559A(Gerald's Hexagon)的相关文章

Codeforces 559A Gerald&#39;s Hexagon 数三角形

题意:按顺序给出一个各内角均为120°的六边形的六条边长,求该六边形能分解成多少个边长为1的单位三角形. 把单位三角形面积看做1,实际上就是求六边形面积.随便找六边形的三条互相不相邻的边,分别以这三条边为基础向外扩展一个等边三角形,即可将原六边形补成一个大等边三角形,然后用大等边三角形面积减去补上的3个小等边三角形面积就是原来六边形的面积.而等边三角形面积很简单.就是边长的平方(实际就是边长为n的等边三角形能分解成n^2个边长为1的单位三角形,画个图就能理解了). #include <cstdi

Codeforces 559A Gerald&amp;#39;s Hexagon 数三角形

题意:按顺序给出一个各内角均为120°的六边形的六条边长,求该六边形能分解成多少个边长为1的单位三角形. 把单位三角形面积看做1,实际上就是求六边形面积.随便找六边形的三条互相不相邻的边,分别以这三条边为基础向外扩展一个等边三角形.就可以将原六边形补成一个大等边三角形,然后用大等边三角形面积减去补上的3个小等边三角形面积就是原来六边形的面积. 而等边三角形面积非常easy.就是边长的平方(实际就是边长为n的等边三角形能分解成n^2个边长为1的单位三角形,画个图就能理解了). #include <

codeforces 560 C Gerald&#39;s Hexagon

神精度--------这都能过,随便算就好了,根本不用担心 就是把六边形补全成三角形,然后去掉补的三个三角形,然后面积除以边长1的三角形的面积即可.... #include<map> #include<string> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<queue> #include<vector&

Codeforces Round #313 (Div. 2) Gerald&#39;s Hexagon

给出一个六边形六条边的长度(六边形的每个角为120度),求出这个六边形中边长为1的等边三角形有多少个 由于每个角都是120度并且上下两条边是平行的,因此我们可以补出一个矩形,再减掉周边四个角的面积,用剩下面积除以每个小三角形的面积. #include<cstdio> using namespace std; double a,b,c,d,e,f; int main() { <span style="white-space:pre"> </span>s

Codeforces Round #313 (Div. 2) C Gerald&#39;s Hexagon 计数

// Codeforces Round #313 (Div. 2) C Gerald's Hexagon // 计数 // 关键是平行于a1的长度为1的有多少条,中间的这些*2,再加上a1 // 和a4,就是三角形的总和 // 还是挺简单的,注意递增的初始值,和变化,就ac了 #include <cstdio> #include <algorithm> #include <iostream> #include <cstring> using namespac

Gerald&#39;s Hexagon

Gerald's Hexagon Gerald got a very curious hexagon for his birthday. The boy found out that all the angles of the hexagon are equal to . Then he measured the length of its sides, and found that each of them is equal to an integer number of centimeter

Codeforces 559A

Description Gerald got a very curious hexagon for his birthday. The boy found out that all the angles of the hexagon are equal to . Then he measured the length of its sides, and found that each of them is equal to an integer number of centimeters. Th

Codeforces 559C Gerald and Giant Chess

http://codeforces.com/problemset/problem/559/C 题目大意:给出一个棋盘为h*w,现在要从(1,1)到(h,w),只能向右或向下走,其中有n个黑点不能走,问有多少种方案(模10^9+7)可以从左上角走到右下角(1,1和h,w永远是可以走的) 思路:用dp,首先把终点也算入黑点,然后dp这样: f[i]=从起点到这个点的所有路径数 f[i]-f[j]*从j点到i点的所有路径数 为什么这样?因为我们先算出总的路径数,再去掉不合法的路径数,也就是:从经过第一

Codeforces 560B Gerald is into Art(构造性算法)

B. Gerald is into Art time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Gerald bought two very rare paintings at the Sotheby's auction and he now wants to hang them on the wall. For that he