比赛 20110722 评测结果 AAWWWWWWWW
题目名称 饥饿的母牛 最终得分 20
用户昵称 PurpleShadow 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-07-22 11:21:25
显示代码纯文本
#include <cstdio>
#include <cmath>
const double N=100000,pi=3.1415926535897;
double l,d,s,x,a,r,m,t;
double height(double x)
{return sqrt(r*r-(x+t)*(x+t));}
double slove()
{
	if (s<=d) return s*s*pi;
	a=2*asin(l/(2*x));
	if (s<=x) return s*s*(2*pi-a)/2;
	double ans=s*s*(2*pi-a)/2+(s-x)*(s-x)*(pi+a)/2+l*d/2;
	if (s<=(x+l/2)) return ans;
	r=(s-x);m=r-l/2;t=l/2;
	double tmp=0;
	for (int i=1;i<=N;++i)
		tmp+=m/N*height(i*m/N);
	tmp*=2;
	return ans-tmp;
}	
int main()
{
freopen("hungry.in","r",stdin);
freopen("hungry.out","w",stdout);
	int t;
	scanf("%d",&t);
	while (t--)
	{
		scanf("%lf%lf%lf",&l,&d,&s);
		x=sqrt((l/2)*(l/2)+d*d);
		printf("%.2lf\n",slove());
	}
	return 0;
}