题意:按顺序给出一个各内角均为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\n", (a + b + c)*(a + b + c) - (a*a + c*c + e*e)); return 0; }
Codeforces 559A Gerald's Hexagon 数三角形
时间: 2024-10-07 11:34:41