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 d,c,s;
		d=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
		if(d==2*r){
			printf("相切\n");
		}else if(d>2*r){
			printf("相离\n");
		}else if(d==0){
			printf("重合\n");
		}else{
			c=acos(d/2/r);
			s=c*r*r-d/2*r*sin(c);
			printf("%.2f\n",2*s);
		}
	}
	return 0;
} 

Double click to view unformatted code.


Back to problem 106