内角均为120度六边形面积求解(xdoj 1118)

上题:西电oj 1118 : http://acm.xidian.edu.cn/problem.php?id=1118

内角均为120度的六边形不一定是正六边形!!
内角均为120度的六边形不一定是正六边形!!
内角均为120度的六边形不一定是正六边形!!
重要的事情说三遍~!

内角均为120度的六边形的特点:对边的差相等

面积求法:
延长三边交于三点,得到正三角形
六边形面积=大正三角形面积-3个小正三角形面积

然后枚举6边找符合要求的六边形最大面积就好啦~

代码:

#include 

using namespace std;

int mm[6];

int main()
{
    while (scanf("%d %d %d %d %d %d",&mm[0],&mm[1],&mm[2],&mm[3],&mm[4],&mm[5])!=EOF)
    {
        double sum=-1.0,ma=-1.0;
        sort(mm, mm+6);
        do
        {
            int t1 = mm[5]+mm[1]+mm[0];
            int t2 = mm[3]+mm[1]+mm[2];
            int t3 = mm[5]+mm[4]+mm[3];
            if (t1==t2 && t2==t3)
            {
                sum=sqrt(3)*(t1*t1-mm[1]*mm[1]-mm[3]*mm[3]-mm[5]*mm[5])/4.0;
                ma=max(ma,sum);
            }

        }while (next_permutation(mm,mm+6));
        if (ma!=-1.0)
            printf("%.2lf\n",ma);
        else   printf("0\n");
        memset(mm, 0, sizeof(mm));
    }
    return 0;
}

你可能感兴趣的:(xdoj,acm水题)