1
一级核心数学打牢算术与逻辑的底子
GESP 一级重点考察用程序解决日常计算问题,数学上只需要小学中高年级的整数运算与简单逻辑,关键是学会"翻译"成代码。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| 整数四则运算 | + - * / 运算符 | 计算总分、平均数、差值等 |
| 整除与取余 | % 运算符 | 判断奇偶(n%2)、数字拆分(n%10) |
| 大小比较 | > < == 等比较符 | 找最大/最小值、判断范围 |
| 逻辑判断 | &&(与)\|\|(或)!(非) | 多条件组合,如"及格且出勤" |
| 等差数列规律 | 循环累加 | 求 1+2+…+n、每隔 3 天一次的日期 |
| 简单统计 | 计数变量 cnt++ | 统计个数、求和、求平均 |
| 计数与枚举 | for 循环 | 列举符合条件的数(水仙花数等) |
| 单位换算 | 乘除法 | 时间(秒→分→时)、长度、金额换算 |
2
二级核心数学进制、位运算与数论入门
二级新增"进制转换"与"位运算"两大考点,同时引入素数、最大公约数等经典数论问题,需要较强的整除与倍数概念。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| 进制与转换 | 十进制 ↔ 二进制/八进制/十六进制 | 按位拆数:除 2 取余、乘 2 累加 |
| 位运算 | & \| ^ ~ << >> | 与/或/异或/取反/左移/右移,如判断第 k 位 |
| 素数判定 | 枚举 + sqrt 优化 | 判断一个数是不是质数 |
| 最大公约数 | 辗转相除法(欧几里得算法) | gcd(a,b),化简分数 |
| 最小公倍数 | lcm = a / gcd(a,b) * b | 求两数最小公倍数 |
| 质因数分解 | 循环除质因子 | 分解 12 = 2×2×3 |
| 倍数与因数 | % 运算 | 求因数、判断整除关系 |
| 奇偶性与末位 | % 2、% 10 | 奇偶判断、取个位/十位数字 |
3
三级核心数学排列组合与递归思想
三级引入函数与递归,数学上开始接触排列组合、递推等"计数"思想,是 GESP 三级最常考的计算型内容。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| 阶乘 | 递归或循环 n! = 1×2×…×n | 求排列数的基础,注意 0! = 1 |
| 排列 | P(n,m) = n!/(n-m)! | 从 n 个中选 m 个排顺序 |
| 组合 | C(n,m) = n!/(m!(n-m)!) | 从 n 个中选 m 个不排顺序 |
| 递推 | f(n) = f(n-1) + f(n-2) | 斐波那契、爬楼梯、铺瓷砖问题 |
| 数学归纳思想 | 递归出口 + 递推关系 | 证明和构造递归程序的思路 |
| 加法原理 / 乘法原理 | 分类相加、分步相乘 | 计数问题的两大基本原则 |
| 概率初步 | 满足条件的情况数 ÷ 总情况数 | 古典概型,与组合数结合 |
| 余数与同余 | 取模运算 (a+b)%m | 大数取模、周期性问题 |
4
四级核心数学数论、计数与几何进阶
四级是认证级难度,数论与组合计数占比明显提升,出现快速幂、卡特兰数、坐标计算等更高阶内容。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| 快速幂 | 二分思想求 a^b % m | O(log b) 计算大指数幂 |
| 同余与模运算 | (a*b)%m = ((a%m)*(b%m))%m | 防止中间结果溢出 |
| 扩展欧几里得 | 求解 ax+by=gcd(a,b) | 解不定方程、求逆元 |
| 卡特兰数 | C(2n,n)/(n+1) | 括号匹配、出栈序列计数 |
| 组合恒等式 | C(n,k)=C(n-1,k)+C(n-1,k-1) | 杨辉三角递推计算组合数 |
| 鸽巢原理 / 容斥 | 计数技巧 | 至少存在、多集合元素计数 |
| 坐标与距离 | 曼哈顿距离 \|x1-x2\|+\|y1-y2\| | 网格图上两点距离 |
| 不等式与最值 | 枚举/数学推导求最大最小 | 最大公约数+最小公倍数关系等 |
| 平方根与取整 | sqrt、向下取整 | 素数判定优化、数据规模估算 |
5
竞赛常用公式速查考前 5 分钟过一遍
以下公式在 GESP 三、四级机考中最常出现,建议熟记并能用代码实现。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| gcd(a,b) | 辗转相除:a 与 b 反复取余,直到余数为 0 | 欧几里得算法 |
| lcm(a,b) | a × b ÷ gcd(a,b) | 先除后乘,防止溢出 |
| n! | 1×2×…×n;0! = 1 | 阶乘定义 |
| P(n,m) | n! ÷ (n-m)! | 排列:顺序有关 |
| C(n,m) | n! ÷ (m! × (n-m)!) | 组合:顺序无关;C(n,m)=C(n,n-m) |
| 杨辉三角 | C(n,k) = C(n-1,k-1) + C(n-1,k) | 组合数递推,适合取模计算 |
| 斐波那契 | F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) | 递推/递归双实现 |
| 二进制第 k 位 | (x >> k) & 1 | 取 x 的二进制第 k 位(从 0 开始) |
| 快速幂 | ans = ans * a % m; a = a * a % m; | 按指数二进制位分步累乘 |
| 异或性质 | a ^ a = 0;a ^ 0 = a | 成对消除、交换两数 |
| 曼哈顿距离 | \|x1-x2\| + \|y1-y2\| | 网格坐标距离 |
| 取整方向 | 整数除法自动向下取整;向上取整 (a+b-1)/b | 数据范围估算常用 |
6
常用数学函数(C++ 实现)把数学公式写进代码
GESP 允许使用 cmath 等标准库函数,掌握这些函数能把复杂的数学计算变成一行代码,是考场上省时间的关键。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| 绝对值 abs | abs(x)、fabs(x) | |x|,如求两点距离、差值 |
| 乘方 pow | pow(a,b) | a 的 b 次方,注意返回 double |
| 开方 sqrt | sqrt(x) | 平方根,素数判定优化用 |
| 向上/向下取整 | ceil(x)、floor(x) | ceil(2.1)=3,floor(2.9)=2 |
| 四舍五入 round | round(x) | round(2.5)=3,round(2.4)=2 |
| 对数 log / log2 | log(x)、log2(x) | log2(8)=3,估算规模用 |
| 指数 exp | exp(x) | e 的 x 次方,增长率模型 |
| 最大/最小 max min | max(a,b)、min(a,b) | 两数取大/取小,简洁高效 |
| 头文件 | #include <cmath> | 数学函数都来自 cmath / math.h |
7
数论进阶(竞赛高频)从会算到会"巧算"
四级及以上、以及 CSP 竞赛中,数论是常客。掌握筛法、快速幂和模运算,能解决大量"看起来算不完"的题目。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| 埃氏筛 | bool 数组标记 | 求 1e6 内全部素数,O(n log log n) |
| 快速幂 | 二进制拆分指数 | a^b 取模,指数 b 可达 1e18 |
| 模运算性质 | (a+b)%m、(a×b)%m | 先取模再运算,防溢出 |
| 同余 | a ≡ b (mod m) | a-b 能被 m 整除 |
| 多数 GCD | gcd(gcd(a,b),c) | 多个数的最大公约数 |
| 裴蜀定理 | ax+by 能表示 gcd(a,b) 的倍数 | 线性组合可行性判断 |
| 素数判断优化 | 枚举到 sqrt + 6k±1 | 大数素数判断更快 |
| 逆元(进阶) | 费马小定理 a^(m-2) | 模素数下把除法转成乘法 |
| 二进制拆分思想 | 倍增 / 预处理 | 快速幂、RMQ、树上跳的公共内核 |
8
数据规模决定算法先看数据范围再动手
GESP 题目一定给出数据范围,它直接决定你能用什么算法。看到范围先算复杂度,是拿满分的第一步。
| 数学知识点 | 编程对应 | 典型场景 / 示例 |
|---|---|---|
| n ≤ 10 | O(n!) 枚举排列 | 全排列、暴力搜索 |
| n ≤ 100 | O(n³) | Floyd 最短路等 |
| n ≤ 1000 | O(n²) | 双重循环、朴素 DP |
| n ≤ 1e6 | O(n) 或 O(n log n) | 单层循环、排序 |
| n ≤ 1e9 | O(log n) | 二分、快速幂 |
| int 范围 | 约 ±21 亿(2^31-1) | 超了就换 long long |
| long long 范围 | 约 ±9.2×10^18(2^63-1) | 大数运算记得用 |
| 常用估算 | 2^10≈1e3、2^20≈1e6、2^30≈1e9 | 快速估算数据规模 |
| 时间预算 | 1 秒约 1e8 次基本运算 | 评测机常见限制 |