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 浮点数精度差,竞赛不使用
相关推荐
水木流年追梦2 小时前
大模型入门-大模型的推理策略
开发语言·python·算法·正则表达式·prompt
生成论实验室2 小时前
用事件关系网络重新理解AI(三):激活函数、微调与元学习
人工智能·学习·算法·语言模型·可信计算技术
Narv工程师2 小时前
嵌入式机器人控制器算力评估:从DMIPS到WCET的完整指南
人工智能·算法·机器学习
蒟蒻的贤2 小时前
实训1227
算法
liulilittle2 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯
LCG元2 小时前
RAG - 大模型检索增强生成深度解析:本地知识库 / 企业级落地优化配置
人工智能·算法
龙佚2 小时前
RTC语音质量优化实战:搭建完整语音系统
算法·架构
过期动态2 小时前
【LeetCode 热题 100】字母异位分组
java·算法·leetcode·职场和发展·哈希算法
独隅2 小时前
DeepSpeed ZeRO-3在TensorFlow中缺失的底层支持机制与优化全面指南
人工智能·python·tensorflow