[SDJX2015]面积

时间:2023-03-09 07:59:54
[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)/;
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:=;
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(,,);
ans:=ans/tt;
writeln(ans::);
close(input);
close(output);
end.