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

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

以下是算法竞赛(如蓝桥杯、牛客网)中常用的 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 扩展)可能不可移植,建议手写欧几里得算法。
相关推荐
z人间防沉迷k17 分钟前
堆(Heap)
开发语言·数据结构·笔记·python·算法
不二狗27 分钟前
每日算法 -【Swift 算法】Two Sum 问题:从暴力解法到最优解法的演进
开发语言·算法·swift
LabVIEW开发28 分钟前
LabVIEW中样条插值实现及应用
算法·labview知识
LabVIEW开发33 分钟前
LabVIEW机械振动信号分析与故障诊断
算法·labview知识·labview开发案例
啊我不会诶1 小时前
CF每日5题(1300-1500)
算法·深度优先·图论
芒果量化1 小时前
量化交易 - 网格交易策略实现与原理解析
python·算法·机器学习·金融
MUTA️1 小时前
ultalytics代码中模型接收多层输入的处理
深度学习·算法·yolo·机器学习·计算机视觉
feifeigo1232 小时前
基于粒子群算法的配电网重构
算法·重构
XiaoyaoCarter3 小时前
每日一道leetcode(新学数据结构版)
数据结构·c++·算法·leetcode·职场和发展·哈希算法·前缀树
晴空闲雲3 小时前
数据结构与算法-线性表-单链表(Linked List)
数据结构·算法·链表