View Code of Problem 106

    #include<stdio.h>
    #include<math.h>
     
    int main()
    {
      double x1,y1,x2,y2,r,d;
      double c = 0, s = 0; 
      while(scanf("%lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&r)!=EOF)
      {
        d=sqrt((y1-y2)*(y1-y2)+(x1-x2)*(x1-x2));
        if(x1==x2&&y1==y2)
          printf("重合\n");
        else if(d==2*r)
          printf("相切\n");
        else if(d>2*r)
          printf("相离\n"); 
        else
        {
          printf("相交 ");
          c=acos(d/2.0/r);
          s=(c*r*r-r*sin(c)*d/2.0);
          printf("%.2lf\n",s*2);
        }
      }
      return 0;
    }

Double click to view unformatted code.


Back to problem 106