View Code of Problem 106

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

Double click to view unformatted code.


Back to problem 106