7-2 洛希极限

7-2 洛希极限科幻电影 流浪地球 中一个重要的情节是地球距离木星太近时 大气开始被木星吸走 而随着不断接近地木 刚体洛希极限 地球面临被彻底撕碎的危险 但实际上 这个计算是错误的 洛希极限 Roche limit 是一个天体自身的引力与第二个天体造成的潮汐力相等时的距离 当两个天体的距离少于洛希极限

大家好,我是讯享网,很高兴认识大家。

科幻电影《流浪地球》中一个重要的情节是地球距离木星太近时,大气开始被木星吸走,而随着不断接近地木“刚体洛希极限”,地球面临被彻底撕碎的危险。但实际上,这个计算是错误的。


讯享网

洛希极限(Roche limit)是一个天体自身的引力与第二个天体造成的潮汐力相等时的距离。当两个天体的距离少于洛希极限,天体就会倾向碎散,继而成为第二个天体的环。它以首位计算这个极限的人爱德华·洛希命名。(摘自百度百科)

大天体密度与小天体的密度的比值开 3 次方后,再乘以大天体的半径以及一个倍数(流体对应的倍数是 2.455,刚体对应的倍数是 1.26),就是洛希极限的值。例如木星与地球的密度比值开 3 次方是 0.622,如果假设地球是流体,那么洛希极限就是 0.622×2.455=1.52701 倍木星半径;但地球是刚体,对应的洛希极限是 0.622×1.26=0.78372 倍木星半径,这个距离比木星半径小,即只有当地球位于木星内部的时候才会被撕碎,换言之,就是地球不可能被撕碎。

本题就请你判断一个小天体会不会被一个大天体撕碎。

输入格式:

输入在一行中给出 3 个数字,依次为:大天体密度与小天体的密度的比值开 3 次方后计算出的值(≤1)、小天体的属性(0 表示流体、1 表示刚体)、两个天体的距离与大天体半径的比值(>1 但不超过 10)。

输出格式:

在一行中首先输出小天体的洛希极限与大天体半径的比值(输出小数点后2位);随后空一格;最后输出 ^_^ 如果小天体不会被撕碎,否则输出 T_T

输入样例 1:

0.622 0 1.4 

讯享网

输出样例 1:

讯享网1.53 T_T 

输入样例 2:

0.622 1 1.4 

输出样例 2:

讯享网0.78 ^_^ 

我一开始是这样写的,没弄明白题目的意思:

 

#include<iostream> #include<algorithm> using namespace std; int main() { float zhi; int flag; float r; cin >> zhi >> flag >> r; float rx; if (flag) { rx = 1.26; } else { rx = 2.455; } float result; result = zhi * rx; if (result > 10) { printf("%.2f T_T", result); } else { printf("%.2f ^_^", result); } return 0; }

错误原因:审题不清

先要弄明白输入给的是什么和输出要的是什么:

输入格式:

输入在一行中给出 3 个数字,依次为:大天体密度与小天体的密度的比值开 3 次方后计算出的值(≤1)、小天体的属性(0 表示流体、1 表示刚体)、两个天体的距离与大天体半径的比值(>1 但不超过 10)。

大天体密度与小天体的密度的比值开 3 次方后,再乘以大天体的半径以及一个倍数(流体对应的倍数是 2.455,刚体对应的倍数是 1.26),就是洛希极限的值。例如木星与地球的密度比值开 3 次方是 0.622,如果假设地球是流体,那么洛希极限就是 0.622×2.455=1.52701 倍木星半径;但地球是刚体,对应的洛希极限是 0.622×1.26=0.78372 倍木星半径,这个距离比木星半径小,即只有当地球位于木星内部的时候才会被撕碎,换言之,就是地球不可能被撕碎。

以输入样例1为例,

讯享网0.622 0 1.4

它的洛希极限是 rx=0.622*2.455=1.53

怎么判断是否被撕碎?

输入给出了两个天体的距离与大天体半径的比值,我们算得的洛希极限也是两个天体的距离与大天体半径的比值,所以需要这两个进行比较。

修改后:

#include<iostream> #include<algorithm> using namespace std; int main() { float zhi; int flag; float r; cin >> zhi >> flag >> r; float rx; if (flag) { rx = 1.26; } else { rx = 2.455; } float result; result = zhi * rx; if (result > r) {//只修改了这里 printf("%.2f T_T", result); } else { printf("%.2f ^_^", result); } return 0; }

小讯
上一篇 2025-03-29 16:45
下一篇 2025-02-24 09:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/55779.html