Python 算法竞赛:数学核心知识点全总结

本文整理了Python竞赛中最常用的数学相关内置函数、运算符、位运算技巧,直接复制可用,无冗余知识点,纯实战向!

一、幂运算

Python 中有三种幂运算写法,竞赛场景有严格区分,千万不要混用!

python 复制代码
# 1. 普通幂运算:** 运算符
print(2 ** 10)   # 1024,无优化,大指数会卡顿

# 2. 内置函数 pow(推荐)
# 双参数:和 ** 效果完全一致
print(pow(2, 10))  # 1024
# 三参数:竞赛神技!快速幂取模,底层优化,大指数秒算
# pow(底数, 指数, 模数) = (底数^指数) % 模数,唯一的快速幂实现
print(pow(2, 1000000, 1000))  

# 3. math.pow(竞赛禁用)
# 永远返回浮点数,无快速幂,大数丢失精度
import math
print(math.pow(2, 10))  # 1024.0

二、向上/向下取整

python 复制代码
import math
# math.ceil:向上取整(取大于等于当前数的最小整数)
print(math.ceil(5.4))   # 6
print(math.ceil(-5.4))  # -5

# math.floor:向下取整(取小于等于当前数的最大整数)
print(math.floor(5.4))  # 5
print(math.floor(-5.4)) # -6

三、最大公约数 GCD & 最小公倍数 LCM

核心原理

math.gcd 底层采用 欧几里得算法(辗转相除法) 实现

核心公式:gcd(a, b) = gcd(b, a % b),不断取余迭代,直到余数为0,此时的被除数就是最大公约数。

Python内置函数为C语言优化版,速度极快,竞赛直接调用,无需手写。

1. 两数计算

python 复制代码
import math
# 最大公约数 gcd
print(math.gcd(20, 25))  # 5

# 最小公倍数 lcm(公式计算)
# lcm(a,b) = a*b // gcd(a,b)
print(20 * 25 // math.gcd(20, 25))  # 100

2. 多数/列表计算

python 复制代码
from functools import reduce
import math

lst = [12, 18, 24]
# 迭代计算列表所有数的最大公约数
res = reduce(math.gcd, lst)
print(res)  # 6

四、除法与取余

区分普通除法、整除、内置取余函数,竞赛计算商和余数必备:

python 复制代码
# / :普通除法,返回浮点数
print(20/5)   # 4.0

# // :整除(向下取整),返回整数
print(20//5)  # 4

# divmod:内置函数,一次性返回 (商, 余数)
print(divmod(25, 20))  # (1, 5)

五、常用数学计算

开方、阶乘、对数,竞赛高频工具函数:

python 复制代码
import math
# 开平方 sqrt
print(math.sqrt(4))  # 2.0

# 阶乘 factorial(仅支持非负整数)
print(math.factorial(3))  # 6

# 对数(竞赛常用:计算数字位数)
print(math.log2(8))   # 3.0  以2为底
print(math.log10(10)) # 1.0 以10为底

六、位运算小技巧

一行代码判断2的幂次,竞赛极简写法:

python 复制代码
# 判断一个数是2的幂次:x & (x-1) == 0
print(4 & 3 == 0)   # True
print(8 & 7 == 0)   # True
print(5 & 4 == 0)   # False

七、进制转换(二进制高频)

竞赛中二进制转换、统计1的个数、进制互转必备:

python 复制代码
# 1. 十进制转二进制字符串([2:] 去掉前缀 0b)
x = bin(10)[2:]   # '1010'
print(x)

# 2. 统计二进制中1的个数
print(x.count('1'))  # 2

# 3. 二进制字符串转回十进制
print(int("1010", 2))  # 10

总结

  1. 快速幂 :只有三参数 pow(a,b,mod) 是快速幂,其余写法无优化
  2. GCD :底层=辗转相除法,3.8.6仅支持两数,多数必须用 reduce(math.gcd, 列表)
  3. 取整ceil 向上、floor 向下,无四舍五入
  4. 进制bin(x)[2:] 转纯二进制,int(字符串, 进制) 转回十进制
  5. 禁用math.pow 浮点数精度差,竞赛不使用
相关推荐
麻雀飞吧24 分钟前
零基础选量化工具,先把问题说清楚
人工智能·python
段一凡-华北理工大学34 分钟前
AI推动工业智能化转型~系列文章20:工业 AI 平台架构:云-边-端协同的技术体系
人工智能·python·架构·工业平台·云-边协同
CodeBlog-star37 分钟前
Harness Engineering:Pi Agent 架构深度解析
人工智能·python·架构·harness工程
简不变40 分钟前
将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件
python
AC赳赳老秦1 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw
databook1 小时前
如何对稀疏数据的场景进行分析
python·数据挖掘·数据分析
qeen872 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
lucas_AI2 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法
Java&Develop2 小时前
DeltaFStation 宝塔 Linux 部署教程
python
小柯南敲键盘3 小时前
跨境电商图片翻译工具推荐:批量AI翻译+视频字幕+智能抠图
人工智能·python·音视频