CodeForces 560C Gerald's Hexagon

分析

顺时针给一六边形的各边长,问该六边形有几个边长为1的小三角形。

首先考察是否有规律可循,显然,变量太多,直接通过边长考察个数可能不好。
其实可以间接地通过剥洋葱的方法一层一层剥过去。边长为n的边,可以为这个六边形贡献2n-1个小三角形,再向内缩短边长形成一个六边形直至无法形成六边形,例如线、三角形、菱形再特判。但是这样也较为麻烦。

既然通过边长数这个方向不好,那么可以尝试通过面积,每一个小三角形的面积是固定的,我们只需要计算出该六边形的面积,将其除以小三角形的面积即可得到个数。

如何计算六边形的面积?可以尝试割补法。任取六边形连续的三个边长,将其展开成一条直线,即为补成一正三角形的边长。证明正三角形略。

不妨取 a[0]a[1]a[2] 三条边长,和记为 A ,那么该正三角形的面积为

SΔ=12×A×32A=34A2

那么顺时针方向需要割掉的三角形是以 a[0]a[2]a[4] 为底的三角形,其面积为

SΔA0+ΔA2+ΔA4=34(a[0]2+a[2]2+a[4]2)

所以该六边形的面积为
S=34[A2(a[0]2+a[2]2+a[4]2)]

那么个数 n
n=SS=34[A2(a[0]2+a[2]2+a[4]2)]34×1=A2(a[0]2+a[2]2+a[4]2)

代码

#include <cstdio>

int main()
{
    int a[6];
    for (int i = 0; i < 6; i++) scanf("%d", &a[i]);
    printf("%d\n", (a[0]+a[1]+a[2])*(a[0]+a[1]+a[2])-a[0]*a[0]-a[2]*a[2]-a[4]*a[4]);
    return 0;
}

题目

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(1ai1000) — 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
1 1 1 1 1 1
Output
6

Input
1 2 1 2 1 2
Output
13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值