算法竞赛中常用的数据处理库函数

算法竞赛中常用的数据处理库函数

以下是算法竞赛(如蓝桥杯、牛客网)中常用的 C++11 标准数学库函数,按函数名分类整理,包含使用方式、头文件及功能说明:


一、基础数学运算

函数名 使用方式及返回值 头文件 功能描述
std::abs(x) double abs(double x); (支持整型/浮点型) <cmath> 返回 x 的绝对值
std::sqrt(x) double sqrt(double x); <cmath> 返回 x 的平方根(需 x ≥ 0
std::pow(x, y) double pow(double x, double y); <cmath> 返回 x^y(结果为浮点型)
std::hypot(x, y) double hypot(double x, double y); <cmath> 返回 √(x² + y²)(两点间欧氏距离)

二、指数与对数函数

函数名 使用方式及返回值 头文件 功能描述
std::exp(x) double exp(double x); <cmath> 返回 e^x(自然指数)
std::log(x) double log(double x); <cmath> 返回 ln(x)(自然对数,需 x > 0
std::log10(x) double log10(double x); <cmath> 返回 log₁₀(x)(以 10 为底)
std::log2(x) double log2(double x); <cmath> 返回 log₂(x)(以 2 为底,C++11 新增)

三、三角函数(参数为弧度)

函数名 使用方式及返回值 头文件 功能描述
std::sin(x) double sin(double x); <cmath> 返回 x 的正弦值
std::cos(x) double cos(double x); <cmath> 返回 x 的余弦值
std::tan(x) double tan(double x); <cmath> 返回 x 的正切值
std::atan2(y, x) double atan2(double y, double x); <cmath> 返回 y/x 的反正切(四象限,弧度值)

四、取整与舍入函数

函数名 使用方式及返回值 头文件 功能描述
std::ceil(x) double ceil(double x); <cmath> 返回不小于 x 的最小整数(向上取整)
std::floor(x) double floor(double x); <cmath> 返回不大于 x 的最大整数(向下取整)
std::round(x) double round(double x); <cmath> 返回最接近 x 的整数(四舍五入,C++11 新增)
std::trunc(x) double trunc(double x); <cmath> 截断小数部分,返回整数部分(向零取整)这个应该可以直接用强制类型转换

五、其他实用函数

函数名 使用方式及返回值 头文件 功能描述
std::cbrt(x) double cbrt(double x); <cmath> 返回 x 的立方根(C++11 新增)
std::fmod(x, y) double fmod(double x, double y); <cmath> 返回 x/y 的浮点余数(符号与 x 相同)
std::remainder(x, y) double remainder(double x, double y); <cmath> 返回 IEEE 余数(符号与 x/y 的商相同)
std::max(a, b) T max(T a, T b);T 为可比较类型) <algorithm>注意头文件 返回 ab 中的较大值
std::min(a, b) T min(T a, T b);T 为可比较类型) <algorithm>注意头文件 返回 ab 中的较小值

六、注意事项

  1. 数据类型一致性

    • std::abs 支持多种类型(如 int, double),但需确保参数类型正确。
    • std::pow 返回浮点数,整型运算需显式转换:(int)pow(2, 3)
  2. C++11 特有函数

    • std::log2, std::round, std::cbrt 等需确认评测环境支持 C++11。
  3. 性能优化

    • 避免在循环中频繁调用 std::pow,手写快速幂更高效。
    • 优先用 std::hypot 而非 sqrt(x*x + y*y)(避免溢出)。
  4. 非标准函数

    • __gcd(GCC 扩展)可能不可移植,建议手写欧几里得算法。
相关推荐
荼蘼1 小时前
基于 KNN 算法的手写数字识别项目实践
人工智能·算法·机器学习
Yuroo zhou1 小时前
IMU的精度对无人机姿态控制意味着什么?
单片机·嵌入式硬件·算法·无人机·嵌入式实时数据库
jackzhuoa2 小时前
java小白闯关记第一天(两个数相加)
java·算法·蓝桥杯·期末
Codeking__3 小时前
链表算法综合——重排链表
网络·算法·链表
minji...3 小时前
数据结构 堆(4)---TOP-K问题
java·数据结构·算法
AI_Keymaker4 小时前
一句话生成3D世界:腾讯开源混元3D模型
算法
Leon_vibs4 小时前
当 think 遇上 tool:深入解析 Agent 的规划之道
算法
旧时光巷4 小时前
【机器学习-2】 | 决策树算法基础/信息熵
算法·决策树·机器学习·id3算法·信息熵·c4.5算法
落了一地秋4 小时前
4.5 优化器中常见的梯度下降算法
人工智能·算法·机器学习
前端伪大叔5 小时前
第 5 篇:策略参数怎么调优?Freqtrade hyperopt 快速入门
算法·代码规范