View Code of Problem 106

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

Double click to view unformatted code.


Back to problem 106