[SDJX2015]面积

【问题描述:】

一个六边形的每个内角均为120°,按顺时针给定它每条边的长度,求它的面积与边长为1的等边三角形的面积的比值。

 

【输入:】

一行六个整数a,b,c,d,e,f,表示六条边的长度。

 

【输出:】

一行一个整数表示面积的比值。

 

【输入输出样例:】

area.in

area.out

1 2 1 2 1 2

13

 

【数据范围:】

对于全部的数据,1<=a,b,c,d,e,f<=1000;

 

【思路】

       解法一:对余弦定理可以求出每两个不相邻顶点间的边,可以把六边形分成四个三角形用海伦公式求出面积即可。

       解法二:可以延长六边形个边把其变成一个大的等边三角形,可以推出新补得三角形都是等边三角形,用等边三角形面积公式求出并做差即可。

 

【解法一】

var a,b,c,d,e,f,ans,s1,s2,s3,t1,t2,t3,tt:real;
function ss(x,y,z:real):real;
var p:real;
begin
    p:=(x+y+z)/2;
    ss:=sqrt(p*abs((p-x))*abs((p-y))*abs((p-z)));
end;

function yuxian(x,y:real):real;
begin
    yuxian:=sqrt(x*x+y*y+x*y);
end;
//余弦定理

begin
    assign(input,'area.in');
    assign(output,'area.out');
    reset(input);
    rewrite(output);
    ans:=0;
    readln(a,b,c,d,e,f);
    s1:=yuxian(a,b);
    t1:=ss(a,b,s1);
    ans:=ans+t1;
    s2:=yuxian(c,d);
    t2:=ss(c,d,s2);
    ans:=ans+t2;
    s3:=yuxian(e,f);
    t3:=ss(e,f,s3);
    ans:=ans+t3;
    tt:=ss(s1,s2,s3);
    ans:=ans+tt;
    tt:=ss(1,1,1);
    ans:=ans/tt;
    writeln(ans:0:0);
    close(input);
    close(output);
end.

 

posted on 2015-08-09 09:11  川汉唐  阅读(192)  评论(0编辑  收藏  举报

导航