hdu 5120 - Intersection

题意:求两个相等的圆环的相交的面积.... 简单计算几何+容斥原理? 扇形面积公式记错调了半天2333333333      这题不难...倒是从学长那里收获了几点关于代码规范的问题...  听说了学长在北京区域赛时把PI定义错了一位结果一直WA的教训.... 以后还是写acos(-1)吧 局部变量和全局变量因为【想怎么其变量名想得整个人都不好了】就起成了一样的...被学长给了差评。 哦,对!还有一个就是发现了cmath库里有一个奇葩的函数名叫y1.。。。。。。。 —————————————————————————————————————————————— 竟然CE了  提示 error:pow(int,int) is ambiguous 看来我对语言的掌握程度还是不行呀.....

"就是一个函数声明为pow(double, double)你必须传两个double参数进去。但你传int也可以,int会转型会double,但c++有重载。声明了两个函数pow(double, double),pow(long long, double),你传两个int进去编译器不知道把int转为double还是转为long long" "解决办法是把int转型成double (xxx) 或者long long (xxx)" 也可以 简单粗暴的xxx.0

(int,int)->(double,int)?(double,double)

 1
 2 
 3    #include <iostream>
 4    #include <cmath>
 5    #include <iomanip>
 6    
 7    using namespace std;
 8    
 9        int t,tt;
10        int rr,RR,x11,x22,y11,y22;
11        double ans;
12        const double PI=acos(-1);
13        const double C=10e-6;
14        double area(int x1,int y1,int x2,int y2,int R,int r);
15    int main()
16    {
17        cin>>t;
18        tt=t;
19        while (t--)
20        {
21            cin>>rr>>RR;
22            cin>>x11>>y11>>x22>>y22;
23            ans=area(x11,y11,x22,y22,RR,RR)-2*area(x11,y11,x22,y22,RR,rr)+
24                area(x11,y11,x22,y22,rr,rr);
25                cout<<"Case #"<<tt-t<<": "
26                <<fixed<<setprecision(6)<<ans<<endl;
27        }
28        return 0;
29    }
30    double area(int x1,int y1,int x2,int y2,int R,int r)
31    {
32         double d;
33         double A,a;
34         double st;
35          d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
36         if (d>=r+R)
37            return 0;
38         if (R-r>=d)
39          return r*r*PI;
40          A=acos((R*R+d*d-r*r)/(2.0*d*R));
41          a=acos((r*r+d*d-R*R)/(2.0*d*r));
42          st=R*d*sin(A);
43          A=A*2;
44          a=a*2;
45          return  (A*R*R+a*r*r)/2.0-st;
46    }