HDU5120(平面几何)
2015-10-07 19:29
477 查看
求两个圆环的相交面积。
容易知道相交面积=两个大圆相交面积+两个小圆相交面积-2*大圆和小圆相交面积。
容易知道相交面积=两个大圆相交面积+两个小圆相交面积-2*大圆和小圆相交面积。
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> using namespace std; double x1,ya,x2,y2; double dis; double s1,s2,s3; double R,r; double sov(double R,double r) { if(dis>=r+R) return 0.0; if(dis==0||dis<=R-r) { return acos(-1)*r*r; } double x=(R*R-r*r+dis*dis)/2.0/dis; double y=(r*r-R*R+dis*dis)/2.0/dis; double seta1=2*acos(x/R); double seta2=2*acos(y/r); double ans=seta1*R*R/2.0+seta2*r*r/2.0; double h=sqrt(R*R-x*x); ans-=dis*h; return ans; } int main() { int t; int kase=0; scanf("%d",&t); while(t--) { scanf("%lf%lf",&r,&R); scanf("%lf%lf%lf%lf",&x1,&ya,&x2,&y2); dis=sqrt((x1-x2)*(x1-x2)+(ya-y2)*(ya-y2)); s1=sov(R,R); s2=sov(R,r); s3=sov(r,r); double tot=s1-2*s2+s3; printf("Case #%d: ",++kase); printf("%.6f\n",tot); } return 0; }
相关文章推荐
- UESTC 87 Easy Problem With Numbers
- 项目33.2 求阶乘
- 从道德经中学习java
- MP之插件开发-事务
- Spring中BeanCreationException异常::0formul unbound in pointcut
- 二叉树三种遍历的非递归实现
- Swift学习笔试19——扩展(Extension)
- 简单的百度预测搜索功能(php+jQuery+js+ajax)
- 从道德经中学习java
- POJ 2513 【字典树】【欧拉回路】
- 用imageMagick进行图片打水印
- 复习
- 四则运算
- 数组最大矩形面积
- Sicily 1151. 魔板
- Mysql导出表数据到文本文件
- HDU5119(DP)
- Web APi之认证(Authentication)两种实现方式【二】(十三)
- SQL Server ->> CLR编程问题汇总
- hdu4751Divide Groups 二分图判断