View Code of Problem 106

#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
const double pi=atan(1)*4;
int main(){
	 double x1,y1,x2,y2,r;
	 while(cin>>x1>>y1>>x2>>y2>>r){
	 	double dis=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
	 	if(dis==2*r)
	 		cout<<"相切"<<endl; 
	 	else if(dis>2*r)
	 		cout<<"相离"<<endl;
		else if(dis==0)
			cout<<"重合"<<endl;
		else if(dis<2*r){
			cout<<"相交";
			double b=dis/2;
			double c=r; 
			double angle=acos(b/c)*2;
			double sanjiao=1.0/2*r*r*sin(angle);
			double shan=angle/(2*pi)*pi*r*r;
			double s=shan-sanjiao;
			printf(" %.2f\n",s*2);
		} 
	 }
}

Double click to view unformatted code.


Back to problem 106