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

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

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

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

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

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

代码:

#include <bits/stdc++.h>

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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值