如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。

URAL/1084

来自"NOCOW"

跳转到: 导航, 搜索

//简直就像一个数学题,分段函数。

Program U1084;
 
Const
  pi                    =       3.1415926536;
 
Var
  l,r                   :       Integer;
  s,ss,k,d,aef,dd       :       Extended;
 
Begin
  readln(l,r);
 
  d:=l*0.5;
  dd:=sqrt(sqr(d)+sqr(d));
 
  if dd<r then begin s:=l*l;writeln(s:0:3);halt;end;
  if r<d then begin s:=r*r*pi;writeln(s:0:3);halt;end;
 
  k:=Sqrt(sqr(r)-sqr(l*0.5));
  aef:=Arctan(k/(l*0.5));
 
  ss:=r*r*pi*aef/(pi+pi)-k*l*0.5*0.5;
 
  s:=r*r*pi;
  s:=s-ss*8;
 
  writeln(s:0:3);
End.


 //program cao 纪念我们伟大的曹师傅
 #include <stdio.h>
 #include <math.h>
 double a,r;
 double ans,Pi=3.14159265358979323846;
 void Init()
 {
      scanf("%lf%lf",&a,&r);
 }
 void Work()
 {
      double x,alpha,co,si;
      if(sqrt(2)*a/2<=r) ans=a*a*1.0;else
      if(r<=a/2) ans=r*r*Pi;else
      { 
         co=a/2/r;
         si=sqrt(1-co*co);
         alpha=atan(si/co);
         ans=(r*si*a/2+(Pi/2-alpha*2)*r*r/2)*4;
      }
 }
 void Print()
 {
      printf("%.3lf\n",ans);
 }
 int main()
 {
     Init();
     Work();
     Print();
     return 0; 
 }
个人工具