求两球体积并

#include<bits/stdc++.h>
using namespace std;
const double pi=acos(-1);
double v(double r){return 4*pi*r*r*r/3;}
int main()
{
	double x1,y1,z1,r1,x2,y2,z2,r2,x,m,n,ans;
	cin>>x1>>y1>>z1>>r1>>x2>>y2>>z2>>r2;
	x=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
	m=max(r1,r2);
	n=min(r1,r2);
	if(x>r1+r2)
		ans=v(r1)+v(r2);
	else if(x+n<=m)
		ans=v(m);
	else
		ans=v(r1)+v(r2)-pi*(n+m-x)*(n+m-x)*(x*x+2*x*m-3*m*m+2*x*n+6*m*n-3*n*n)/12/x;
	printf("%.7lf\n",ans);
	return 0;
}
        stringstream ssin(line);
        int cnt = 0,p;
        while(ssin >> p) Next[++cnt] = p;
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务