博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2546 Circular Area
阅读量:4981 次
发布时间:2019-06-12

本文共 1513 字,大约阅读时间需要 5 分钟。

Description

Your task is to write a program, which, given two circles, calculates the area of their intersection with the accuracy of three digits after decimal point.

Input

In the single line of input file there are space-separated real numbers x1 y1 r1 x2 y2 r2. They represent center coordinates and radii of two circles.

Output

The output file must contain single real number - the area.

Sample Input

20.0 30.0 15.0 40.0 30.0 30.0

Sample Output

608.366 求两园相交面积
1 #include 
2 #include
3 #include
4 using namespace std; 5 double dis(double x1, double y1, double x2, double y2) { 6 return sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); 7 } 8 int main() { 9 double pi = acos(-1);10 double gx, gy, gr, wx, wy, wr;11 while(scanf("%lf %lf %lf %lf %lf %lf", &gx, &gy, &gr, &wx, &wy, &wr) != EOF) {12 double dd = dis(gx, gy, wx, wy);13 if(dd >= (wr + gr) || wr == 0 || gr == 0) printf("0.000\n");14 else if(dd <= fabs(wr - gr)) {15 double rr = min(wr, gr);16 printf("%.3f\n",rr*rr*pi);17 } else {18 double a1 = acos((gr*gr + dd*dd - wr*wr) / (2*gr*dd));19 double a2 = acos((wr*wr + dd*dd - gr*gr) / (2*wr*dd));20 double area1 = (sin(a1*2)*gr*gr+sin(a2*2)*wr*wr)/2;21 double area2 = gr*gr*a1 + wr*wr*a2;22 printf("%.3f\n",(area2-area1));23 }24 }25 return 0;26 }

 

转载于:https://www.cnblogs.com/xingkongyihao/p/7614579.html

你可能感兴趣的文章
Vue.Js
查看>>
炫酷的手风琴效果
查看>>
面试官:你是如何使用JDK来实现自己的缓存(支持高并发)?
查看>>
iOS开发 代码 或 <Home+Power>截屏
查看>>
字符编码大纲
查看>>
使Python中的turtle模块画图两只小羊
查看>>
阿里云数据库Redis版 ERR invalid password
查看>>
z-index坑
查看>>
javascript基础学习五-原型prototype
查看>>
C++类实现AVL树
查看>>
使用spacedesk实现两台笔记本的双屏显示
查看>>
解决 Javascript 中 atob 方法解码中文字符乱码问题
查看>>
Tomcat使用线程池配置高并发连接
查看>>
iOS----------输入框UITextField禁止输入空格
查看>>
Windows Phone 学习教程(一)
查看>>
整合Solr与tomcat以及第一个core的配置
查看>>
读写应用程序数据-CoreData
查看>>
贝多芬音乐
查看>>
SRM 20
查看>>
Java IO流
查看>>