现在的位置: 首页 > 综合 > 正文

LightOJ 1331 Agent J

2013年11月05日 ⁄ 综合 ⁄ 共 615字 ⁄ 字号 评论关闭

题目链接 http://lightoj.com/volume_showproblem.php?problem=1331

题意:给出三个两两相切圆的半径,求阴影部分面积

思路:海伦公式求已三个圆心为顶点的三角形的面积,减去三个扇形的面积。

#include <stdio.h>
#include <math.h>

double Sector (double a,double b,double c)
{
	double alpha=acos(((a+b)*(a+b)+(a+c)*(a+c)-(b+c)*(b+c))/(2*(a+b)*(a+c)));
	return a*a*alpha/2;
}

double Triangle (double a,double b,double c)
{
	double p=(a+b+c)/2;
	return sqrt(p*(p-a)*(p-b)*(p-c));
}

double Deal ()
{
	double r1,r2,r3;
	scanf("%lf%lf%lf",&r1,&r2,&r3);
	return Triangle(r1+r2,r1+r3,r2+r3)-Sector(r1,r2,r3)-Sector(r2,r1,r3)-Sector(r3,r1,r2);
}

int main ()
{
	int T;
	scanf("%d",&T);
	for (int cas=1;cas<=T;cas++)
		printf("Case %d: %.8lf\n",cas,Deal());
	return 0;
}

抱歉!评论已关闭.