必学数学知识

GESP 必学数学知识

GESP 每一级都有对应的数学考点。按级别整理核心数学知识与 C++ 编程对应关系:从一级算术逻辑、二级进制位运算与数论入门,到三级排列组合、四级数论计数,再到竞赛级常用结论。

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 % mO(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 等标准库函数,掌握这些函数能把复杂的数学计算变成一行代码,是考场上省时间的关键。

数学知识点编程对应典型场景 / 示例
绝对值 absabs(x)、fabs(x)|x|,如求两点距离、差值
乘方 powpow(a,b)a 的 b 次方,注意返回 double
开方 sqrtsqrt(x)平方根,素数判定优化用
向上/向下取整ceil(x)、floor(x)ceil(2.1)=3,floor(2.9)=2
四舍五入 roundround(x)round(2.5)=3,round(2.4)=2
对数 log / log2log(x)、log2(x)log2(8)=3,估算规模用
指数 expexp(x)e 的 x 次方,增长率模型
最大/最小 max minmax(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 整除
多数 GCDgcd(gcd(a,b),c)多个数的最大公约数
裴蜀定理ax+by 能表示 gcd(a,b) 的倍数线性组合可行性判断
素数判断优化枚举到 sqrt + 6k±1大数素数判断更快
逆元(进阶)费马小定理 a^(m-2)模素数下把除法转成乘法
二进制拆分思想倍增 / 预处理快速幂、RMQ、树上跳的公共内核
8

数据规模决定算法先看数据范围再动手

GESP 题目一定给出数据范围,它直接决定你能用什么算法。看到范围先算复杂度,是拿满分的第一步。

数学知识点编程对应典型场景 / 示例
n ≤ 10O(n!) 枚举排列全排列、暴力搜索
n ≤ 100O(n³)Floyd 最短路等
n ≤ 1000O(n²)双重循环、朴素 DP
n ≤ 1e6O(n) 或 O(n log n)单层循环、排序
n ≤ 1e9O(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 次基本运算评测机常见限制
在线编译器