题目链接 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; }