题目链接

平方根

题目描述

给定一个正整数 n,求 sqrt(n) 的整数部分,即对 sqrt(n) 向下取整的结果。

输入描述: 在一行中输入一个整数 n

输出描述: 输出一个整数,表示 sqrt(n) 向下取整后的值。

解题思路

本题的核心是计算一个数的平方根并提取其整数部分。

  1. 读取输入:从标准输入读取一个正整数 n
  2. 计算平方根:使用标准库中提供的数学函数来计算平方根。
    • 在 C++ 中是 sqrt(),需要包含 <cmath> 头文件。
    • 在 Java 中是 Math.sqrt()
    • 在 Python 中是 math.sqrt() 或直接使用 n ** 0.5。 这些函数通常返回一个浮点数(如 double)。
  3. 向下取整:题目要求的是平方根的整数部分,这等同于对计算结果向下取整(floor)。将浮点数结果直接转换为整数类型(如 C++/Java 中的 (int) 或 Python 中的 int())通常会截断小数部分,对于正数而言,这恰好实现了向下取整的效果。
  4. 输出结果:将得到的整数部分输出。

代码

#include <iostream>
#include <cmath> // 需要包含 cmath 以使用 sqrt

using namespace std;

int main() {
    long long n;
    cin >> n;
    // 计算平方根
    double root = sqrt(n);
    // 将浮点数结果转换为整数,实现向下取整
    cout << (long long)root << endl;
    return 0;
}
import java.util.Scanner;
import java.lang.Math; // Math 类包含 sqrt 方法

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        // 计算平方根
        double root = Math.sqrt(n);
        // 将 double 转换为 long,实现向下取整
        System.out.println((long)root);
    }
}
import math # 导入 math 模块以使用 sqrt

# 读取输入
n = int(input())
# 计算平方根
root = math.sqrt(n)
# 将浮点数结果转换为整数,实现向下取整
print(int(root))

算法及复杂度

  • 算法:标准库数学函数。
  • 时间复杂度: - 调用 sqrt 函数通常被视为一个常数时间复杂度的操作。
  • 空间复杂度: - 仅需常数空间存储变量。