红桃J

用心写好每行完美的代码,远比写一堆更有价值

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一定要相信水题真的很水

POJ-2546

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<cmath>
 4 
 5 using namespace std;
 6 
 7 #define PI acos(double(-1))
 8 
 9 int main()
10 {
11     double x1, y1, r1, x2, y2, r2;
12     cin>>x1>>y1>>r1>>x2>>y2>>r2;
13     double l = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
14     double r = r1>r2? r2:r1;
15     if(l<=abs(r1-r2))
16         printf("%.3lf\n",r*r*PI);
17     else if(l>=r1+r2)
18         printf("%.3lf\n",0);
19     else
20     {
21         double ang1 = acos((r1*r1+l*l-r2*r2)/(2*r1*l));
22         double ss1 = r1*r1*ang1;
23         double ang2 = acos((r2*r2+l*l-r1*r1)/(2*r2*l));
24         double ss2 = r2*r2*ang2;
25         double s1 = ss1 - r1*sin(ang1)*l/2;
26         double s2 = ss2 - r2*sin(ang2)*l/2;
27         printf("%.3lf",s1+s2);
28     }
29     return 0;
30 }

单纯的靠高中数学就切掉了。

posted on 2014-08-20 22:24  红桃J  阅读(147)  评论(0编辑  收藏  举报