当前位置: 首页 > news >正文

csp信奥赛C++常用的数学函数详解

csp信奥赛C++常用的数学函数详解

在信息学奥林匹克竞赛(信奥赛)中,C++ 的 <cmath> 头文件提供了丰富的数学函数,用于高效处理数学运算。以下是常用系统数学函数的详细讲解及汇总表格。


  1. 绝对值函数

    • int abs(int x):返回整数的绝对值(需包含 <cstdlib>)。
    • double fabs(double x):返回浮点数的绝对值。
    • C++11 后推荐使用 std::abs(x),支持重载(如 int, double)。
  2. 幂与根

    • double pow(double base, double exponent):计算 baseexponent 次方。
    • double sqrt(double x):返回 x 的平方根(x ≥ 0)。
    • double cbrt(double x)(C++11):返回立方根。
  3. 取整函数

    • double ceil(double x):向上取整(如 ceil(2.3) = 3.0)。
    • double floor(double x):向下取整(如 floor(2.7) = 2.0)。
    • double round(double x):四舍五入到最接近的整数(如 round(2.5) = 3.0)。
  4. 指数与对数

    • double exp(double x):计算 e^x
    • double log(double x):自然对数(x > 0)。
    • double log10(double x):以 10 为底的对数。
  5. 三角函数(参数为弧度)

    • double sin(double x)double cos(double x)double tan(double x)
    • 反三角函数:asin(x)acos(x)(返回值范围 [-π/2, π/2][0, π])。
    • double atan2(double y, double x):计算 y/x 的反正切(处理所有象限)。
  6. 其他函数

    • double fmod(double x, double y):浮点数取模(余数符号同 x)。
    • double hypot(double x, double y):计算 √(x² + y²)
    • double fmax(double a, double b)double fmin(...):返回最大/最小值。

汇总表格

函数名功能参数类型返回值类型示例
abs(int)整数绝对值intintabs(-5)5
fabs(double)浮点数绝对值doubledoublefabs(-3.5)3.5
pow(a, b)计算 a^bdouble, doubledoublepow(2, 3)8.0
sqrt(x)平方根doubledoublesqrt(16)4.0
ceil(x)向上取整doubledoubleceil(2.3)3.0
floor(x)向下取整doubledoublefloor(2.7)2.0
round(x)四舍五入doubledoubleround(2.5)3.0
exp(x)计算 e^xdoubledoubleexp(1)~2.718
log(x)自然对数(ln(x)doubledoublelog(7.389)~2.0
log10(x)以 10 为底的对数doubledoublelog10(100)2.0
sin(x)正弦函数double(弧度)doublesin(π/2)1.0
atan2(y, x)四象限反正切double, doubledoubleatan2(1, 1)π/4
fmod(x, y)浮点取模double, doubledoublefmod(5.5, 2)1.5
hypot(x, y)计算直角斜边double, doubledoublehypot(3, 4)5.0

注意事项

  1. 类型匹配:如 abs 对整型,fabs 对浮点型,C++11 后可用 std::abs 自动匹配。
  2. 错误处理sqrt(-1) 返回 NaNlog(0) 返回 -inf
  3. 精度问题:浮点运算可能存在精度误差,比较时建议用极小量(如 1e-9)。

掌握这些函数能显著提升算法题的编码效率,建议结合实践加深理解。

文末彩蛋:

点击查看老师的个人主页,学习csp信奥赛完整系列课程:
https://edu.csdn.net/lecturer/7901

在这里插入图片描述

相关文章:

  • UPDclient server
  • 使用 Go 和 Gin 实现高可用负载均衡代理服务器
  • 夯实 kafka 系列|第五章:基于 kafka 分布式事件框架 eval-event
  • Java通信
  • JS—深拷贝与浅拷贝:2分钟掌握二者的区别
  • Axure RP设计软件中的各种函数:包括数字、数学、字符串、时间及中继器函数,详细解释了各函数的用途、参数及其应用场景。
  • MIPI(Mobile Industry Processor Interface)详解
  • ASP 应用HTTP.SYS短文件文件解析Access 注入数据库泄漏
  • [MySQL数据库] 索引详解
  • Leetcode12-整数转罗马数字
  • 使用ros_gz_bridge将gz topic转换成ros2 topic
  • 如何自动规整化(格式化)HTML
  • K8S学习之基础五十五:k8s中jenkins部署blueOcean
  • 每日免费分享之精品wordpress主题系列~DAY16
  • K8S安装及部署calico(亲测有用[特殊字符])
  • 基于SpringBoot + Vue 的餐厅点餐管理系统
  • 文件与fd
  • 海康设备http监听接收报警事件数据
  • Compare全目录文件比较内容(项目中用到过)
  • kafka零拷贝技术的底层实现
  • 智利观众也喜欢上海的《好东西》
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报
  • 2025柯桥时尚周启幕:国际纺都越来越时尚
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • A股低开高走全线上涨:军工股再度领涨,两市成交12934亿元
  • AI世界的年轻人|“热潮下要有定力”,她的目标是让机器人真正步入家庭