网友投稿 571 2022-09-02
HDU 1798 Tell me the area
题目地址:#include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3f3f;//1061109567typedef long long LL;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;//const double pi = 3.1415926;用自己定义的pi有可能会造成精度问题,造成wrong,所以是用公式求出来int main(){ double pi =2*asin(1.0);//看到别人用这个求pi,学习一下,sin(pi/2)=1,所以通过这个式子就能得到pi,不会有精度问题 double a,b,c,x,y,z; while(scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&x,&y,&z) != EOF) { double cf = 0; double dis = sqrt((a-x)*(a-x)+(b-y)*(b-y)); if(dis>=c+z || !c || !z) { cf = 0; } else if(dis <= abs(c-z))//等于是内切,小于是内含 { double ll = min(c,z); cf = pi * ll * ll; } else { a = acos((c*c+dis*dis-z*z)/(2*dis*c));//圆o1 b = acos((z*z+dis*dis-c*c)/(2*dis*z)); //圆o1的扇形的面积 x = a*c*c; //圆o2的扇形的面积 y = b*z*z; //圆o1中的三角形的面积 double q = c*c*sin(a)*cos(a); //圆o2中的三角形的面积 double w = z*z*sin(b)*cos(b); cf = x + y -(q + w); } printf("%.3f\n",cf); } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~
暂时没有评论,来抢沙发吧~