题目链接
题目描述
这是一个函数实现题。你需要实现一个 firstSpeed
函数,它接受两个浮点数参数:星球的质量 M
和半径 r
。你需要根据物理学公式计算该星球的第一宇宙速度,并返回一个浮点数结果。
相关公式:
- 万有引力:
- 向心力:
定义:
- 第一宇宙速度是物体在星球表面附近做匀速圆周运动的速度,此时万有引力恰好等于所需的向心力。
- 万有引力常量
G
在本题中假设为。
平台工作模式:
- 你只需要在给定的函数框架内编写核心逻辑。
- 评测系统会自动调用你的函数并验证结果。
- 你不应该编写
main
函数或任何输入/输出代码。
示例:
- 输入:
1000.0, 1.0
(由平台处理) - 你的函数被调用:
firstSpeed(1000.0, 1.0)
- 你的函数应返回: (基于
计算出的值)
解题思路
这道题的核心是将物理概念转化为数学公式并进行编程实现。
-
建立等式: 根据第一宇宙速度的定义,物体在星球表面做圆周运动时,引力完全作为向心力。因此,我们可以建立等式:
-
代入公式: 将题目中给出的具体公式代入上述等式:
其中
v
就是我们要求的第一宇宙速度。 -
化简公式: 我们可以看到,等式两边都有物体的质量
m
,可以消去。同时,两边都乘以r
,可以进一步化简: -
求解速度
v
: 对上式两边取平方根,即可得到第一宇宙速度v
的最终计算公式: -
编程实现:
- 在函数中,首先定义常量
G
的值为6.67e-11
。 - 然后,利用传入的参数
M
和r
,计算(G * M) / r
的值。 - 最后,使用语言内置的
sqrt
函数计算该值的平方根,并将其作为函数返回值。 - 由于所有输入都是浮点数,整个计算过程都在浮点数域内进行,无需担心类型转换。
- 在函数中,首先定义常量
代码
注意:以下是你需要提交的全部内容,即在牛客网给定的模板中填写的代码。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算星球的第一宇宙速度
* @param M double浮点型 星球的质量
* @param r double浮点型 星球的半径
* @return double浮点型
*/
double firstSpeed(double M, double r) {
// 万有引力常量
const double G = 6.67e-11;
// 根据公式 v = sqrt(GM/r) 计算
return sqrt((G * M) / r);
}
};
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算星球的第一宇宙速度
* @param M double浮点型 星球的质量
* @param r double浮点型 星球的半径
* @return double浮点型
*/
public double firstSpeed (double M, double r) {
// 万有引力常量
final double G = 6.67e-11;
// 根据公式 v = sqrt(GM/r) 计算
return Math.sqrt((G * M) / r);
}
}
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 计算星球的第一宇宙速度
# @param M double浮点型 星球的质量
# @param r double浮点型 星球的半径
# @return double浮点型
#
import math
class Solution:
def firstSpeed(self, M: float, r: float) -> float:
# 万有引力常量
G = 6.67e-11
# 根据公式 v = sqrt(GM/r) 计算
return math.sqrt((G * M) / r)
算法及复杂度
- 算法: 数值计算。
- 时间复杂度:
。整个计算过程只涉及几次基本的浮点数乘、除和开方运算,这些都可以看作是常数时间操作。
- 空间复杂度:
。没有使用额外的、与输入规模相关的存储空间。