zoukankan      html  css  js  c++  java
  • POJ 2546

     1 #include<iostream>
     2 #include<numeric>
     3 #include<iomanip>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     //freopen("acm.acm","r",stdin);
    11     double x1;
    12     double y1;
    13     double r1;
    14     double x2;
    15     double y2;
    16     double r2;
    17     double A;
    18     double B;
    19     double d;
    20     double s;
    21     double area;
    22     while(cin>>x1>>y1>>r1>>x2>>y2>>r2)
    23     {
    24     d = sqrt((x1 - x2)*(x1 - x2)+(y1 - y2)*(y1 - y2));
    25     if(r1 < r2)
    26         iter_swap(&r1,&r2);
    27     if(d >= r1+r2)
    28     {
    29         cout<<setiosflags(ios::fixed)<<setprecision(3)<<0.0<<endl;
    30         return 0;
    31     }
    32     if(d <= r1-r2)
    33     {
    34         cout<<setiosflags(ios::fixed)<<setprecision(3)<<r2*r2*2.0*acos(0.0000000)<<endl;
    35         return 0;
    36     }
    37     A=acos((r2*r2+d*d-r1*r1)/2/r2/d);//相交    
    38     B=acos((r1*r1+d*d-r2*r2)/2/r1/d);      
    39     s=(r1+r2+d)/2;  
    40     s=sqrt(s*(s-r1)*(s-r2)*(s-d));  
    41     area=r1*r1*B+r2*r2*A-2*s;
    42     cout<<setiosflags(ios::fixed)<<setprecision(3)<<area<<endl;
    43     }
    44 }
    45 
    46 
    47 
    48 
    49 
    50 
    51 /*
    52 分为两部分扇形来求: 
    53 设两圆圆心分别为O1,O2,交点为E,F, 
    54 设两圆半径分别为r1,r2,圆心距为d,则O1E=r1,O2E=r2,O1O2=d, 
    55 由此可求得三角形EO1O2面积S,以及∠EO1O2的度数α,∠EO2O1度数β, 
    56 公式为:三角形ABC中,a^2=b^2+c^2-2bc*cosA,具体的计算不用我说了吧. 
    57 最后阴影部分面积为α*r1^2+β*r2^2-2S. 
    58 */
  • 相关阅读:
    Linux进阶之正则,shell三剑客(grep,awk,sed),cut,sort,uniq
    生成下拉列表
    获取服务器时间
    Web窗体(WebForm)
    Session
    Cookie
    Server属性
    Response缓冲区
    小案例
    Web窗体(WebForm)的删除和修改
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4568603.html
Copyright © 2011-2022 走看看