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

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

以下是算法竞赛(如蓝桥杯、牛客网)中常用的 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 扩展)可能不可移植,建议手写欧几里得算法。
相关推荐
xiongmaodaxia_z716 分钟前
python每日一练
开发语言·python·算法
zy_destiny44 分钟前
【非机动车检测】用YOLOv8实现非机动车及驾驶人佩戴安全帽检测
人工智能·python·算法·yolo·机器学习·安全帽·非机动车
rigidwill6661 小时前
LeetCode hot 100—搜索二维矩阵
数据结构·c++·算法·leetcode·矩阵
短尾黑猫1 小时前
[LeetCode 1696] 跳跃游戏 6(Ⅵ)
算法·leetcode
矛取矛求1 小时前
栈与队列习题分享(精写)
c++·算法
袖清暮雨2 小时前
【专题】搜索题型(BFS+DFS)
算法·深度优先·宽度优先
LuckyLay2 小时前
LeetCode算法题(Go语言实现)_46
算法·leetcode·golang
alicema11112 小时前
Python-Django集成yolov识别模型摄像头人数监控网页前后端分离
开发语言·后端·python·算法·机器人·django
胡乱儿起个名3 小时前
C++ 标准库中的 <algorithm> 头文件算法总结
开发语言·c++·算法