Codeforces 559A Gerald's Hexagon 数三角形

题意:按顺序给出一个各内角均为120°的六边形的六条边长,求该六边形能分解成多少个边长为1的单位三角形。






把单位三角形面积看做1,实际上就是求六边形面积。随便找六边形的三条互相不相邻的边,分别以这三条边为基础向外扩展一个等边三角形。就可以将原六边形补成一个大等边三角形,然后用大等边三角形面积减去补上的3个小等边三角形面积就是原来六边形的面积。

而等边三角形面积非常easy。就是边长的平方(实际就是边长为n的等边三角形能分解成n^2个边长为1的单位三角形,画个图就能理解了)。






#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <stack>
#include <vector>
#include <map>
#include <set>
using namespace std;

int a, b, c, d, e, f;

int main()
{
    while(scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f) != EOF)
        printf("%d
", (a + b + c)*(a + b + c) - (a*a + c*c + e*e));
    return 0;
}

原文地址:https://www.cnblogs.com/llguanli/p/7106756.html