2013-BIT程序设计 1.球体问题 -- 数学题

1.球体问题

在一部电影中,有一些来自太空的圆球,能使人的噩梦转化为现实。打个比方来说,如果你梦见你正被狮子袭击,那么在现实中你周围的人将会遭到狮子袭击。

现 在问题是送圆球来的外星人正在地球上,他们居住在自己建造的小岛上,笑道的四周被一种位置的有毒液体包围着。地球上的科学家目前还没有确定这种有毒液体的 化学成分,但却已准确地知道了它的一种物理属性——特有的重力G(S)。这种特有的重力会随着时间改变,因此我们的科学家每小时测一次。

外 星人不袭击我们,他们所做的很简单,仅仅是在有毒液体上释放两个圆球组成的双球,双球飘向人类,然后使我们的噩梦成为现实。由于这些都是双球,其破坏力是 一个圆球的两倍。外星人不擅长物理和数学,因此他们制造的双球有些也沉入到了毒液中。我们的科学家擅长物理,因此能确定这个求的质量,但不幸的是他们的数 学也很差!因此他们向你求助来确定这个双球的体积和表面积,而且请你确定它是能飘在液体上还是下沉。你不必考虑漂浮和下沉的精度。设 pi=2*arccos(0)。

输入

输入数据的第一行是整数N,表示输入数据的组数。接下来的N行,每一行代表一组输 入,每组包含5个整数:R1(0<=500)和R2(0<=500)分别表示双球的半径,单位是cm;d(表示双球的球心距,单位是cm,而 且d>max(R1,R2)且d<(R1+R2);球的质量w(w<10000000000,单位是克),有毒液体的密度s(0<s<10)。

输出

每组输入情况都有两行输出。第一行是圆球的体积和表面积(保留到小数点后4位),如果双球是下沉的,在第二行输出“The Paired-Sphere Sinks.”,否则输出“The Paired-Sphere Floats.”。

 

分析:纯粹的数学题,积分求球缺或球冠的体积和面积即可。

 

#include<stdio.h>
#include<math.h>
#define pi  2*acos(0.0)
double cal_angle(double r1,double r2,double d)//the angle between r1 and d;
{
	return acos((r1*r1+d*d-r2*r2)/(2*r1*d));
}
double cal_V(double r,double ang)
{
	return r*r*pi*(r*(1-cos(ang))-r*(1-cos(ang)*cos(ang)*cos(ang))/3);
}
double cal_S(double r,double ang)
{
	return 2*pi*r*r*(1-cos(ang));
}
int main()
{
	int t;
	scanf("%d",&t);
	double r1,r2,d,w,s;
	while(t--){
		scanf("%lf %lf %lf %lf %lf",&r1,&r2,&d,&w,&s);
		double angle1,angle2,V_all,V1,V2,V_ans;
		angle1 = cal_angle(r1,r2,d);
		angle2 = cal_angle(r2,r1,d);
		//printf("%lf %lf\n",cos(angle1),cos(angle2));
		V_all = 4*pi*(r1*r1*r1+r2*r2*r2)/3;
		V1 = cal_V(r1,angle1);
		V2 = cal_V(r2,angle2);
		V_ans = V_all-V1-V2;
		double S_ans,S1,S2;
		S1 = cal_S(r1,angle1);
		S2 = cal_S(r2,angle2);
		S_ans = 4*pi*(r1*r1+r2*r2)-S1-S2;
		printf("%.4lf %.4lf\n",V_ans,S_ans);
		double density = w/V_ans;
		if(density>s)
			printf("The Paired-Sphere Sinks.\n");
		else 
			printf("The Paired-Sphere Floats.\n");
	}
	return 0;
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值