题目链接

第一宇宙速度

题目描述

这是一个函数实现题。你需要实现一个 firstSpeed 函数,它接受两个浮点数参数:星球的质量 M 和半径 r。你需要根据物理学公式计算该星球的第一宇宙速度,并返回一个浮点数结果。

相关公式:

  1. 万有引力:
  2. 向心力:

定义:

  • 第一宇宙速度是物体在星球表面附近做匀速圆周运动的速度,此时万有引力恰好等于所需的向心力。
  • 万有引力常量 G 在本题中假设为

平台工作模式:

  • 你只需要在给定的函数框架内编写核心逻辑。
  • 评测系统会自动调用你的函数并验证结果。
  • 不应该编写 main 函数或任何输入/输出代码。

示例:

  • 输入: 1000.0, 1.0 (由平台处理)
  • 你的函数被调用: firstSpeed(1000.0, 1.0)
  • 你的函数应返回: (基于 计算出的值)

解题思路

这道题的核心是将物理概念转化为数学公式并进行编程实现。

  1. 建立等式: 根据第一宇宙速度的定义,物体在星球表面做圆周运动时,引力完全作为向心力。因此,我们可以建立等式:

  2. 代入公式: 将题目中给出的具体公式代入上述等式: 其中 v 就是我们要求的第一宇宙速度。

  3. 化简公式: 我们可以看到,等式两边都有物体的质量 m,可以消去。同时,两边都乘以 r,可以进一步化简:

  4. 求解速度 v: 对上式两边取平方根,即可得到第一宇宙速度 v 的最终计算公式:

  5. 编程实现:

    • 在函数中,首先定义常量 G 的值为 6.67e-11
    • 然后,利用传入的参数 Mr,计算 (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)

算法及复杂度

  • 算法: 数值计算。
  • 时间复杂度: 。整个计算过程只涉及几次基本的浮点数乘、除和开方运算,这些都可以看作是常数时间操作。
  • 空间复杂度: 。没有使用额外的、与输入规模相关的存储空间。