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

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

以下是算法竞赛(如蓝桥杯、牛客网)中常用的 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 扩展)可能不可移植,建议手写欧几里得算法。
相关推荐
溟洵18 分钟前
【 C/C++ 算法】入门动态规划-----一维动态规划基础(以练代学式)
c语言·c++·算法
过河卒_zh156676623 分钟前
9.12AI简报丨腾讯投资AI游戏平台,B站开源AniSora V3
人工智能·算法·游戏·aigc·算法备案·生成合成类算法备案
boonya34 分钟前
Java垃圾回收机制理论算法及使用
jvm·算法·gc·垃圾收集器·理论
愚润求学35 分钟前
【贪心算法】day9
c++·算法·leetcode·贪心算法
lingran__1 小时前
速通ACM省铜第二天 赋源码(Adjacent XOR和Arboris Contractio)
c++·算法
半桔2 小时前
【STL源码剖析】二叉世界的平衡:从BST 到 AVL-tree 和 RB-tree 的插入逻辑
java·数据结构·c++·算法·set·map
塔中妖3 小时前
【华为OD】分割数组的最大差值
数据结构·算法·华为od
weixin_307779133 小时前
最小曲面问题的欧拉-拉格朗日方程 / 曲面极值问题的变分法推导
算法
RTC老炮3 小时前
webrtc弱网-AlrDetector类源码分析与算法原理
服务器·网络·算法·php·webrtc
孤廖3 小时前
【算法磨剑:用 C++ 思考的艺术・Dijkstra 实战】弱化版 vs 标准版模板,洛谷 P3371/P4779 双题精讲
java·开发语言·c++·程序人生·算法·贪心算法·启发式算法