hustwinter1-B - 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)

 


hustwinter1-B - Intersection

           
hustwinter1-B - Intersection
  
hustwinter1-B - Intersection



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

     
 
hustwinter1-B - Intersection

hustwinter1-B - Intersection

上一篇:oracle基础操作


下一篇:hive sql 优化