View Code of Problem 106

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
	double x1, y1, x2, y2, r;
	double pai=3.1415926;
	while((scanf("%lf %lf %lf %lf %lf", &x1, &y1, &x2, &y2, &r)!=EOF)){
		double x_ = (x1-x2);
		double y_ = (y1-y2);
		double distance = sqrt(x_*x_ + y_*y_);
		if(distance > 2*r){
			printf("相离\n");
		
		}else if(distance == 2*r){
			printf("相切\n");
		}else if(distance < 2*r && distance>0){
			double h = sqrt(r*r - distance/2*distance/2);
			double sin_ = asin(h/r);
			double  s_circle  =  r * r * sin_*2;
			double s_trangle = h * distance;
			double s = (s_circle - s_trangle);
	
			
			int s_ = (int)(s*100+0.5);
			
			printf("相交 %0.2lf\n",s_*1.0/100);


		}else if(distance == 0){
			printf("重合\n");
		
		}
	
	}



	return 0;
}

Double click to view unformatted code.


Back to problem 106