【问题描述:】
一个六边形的每个内角均为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.