容斥原理两集合形式是?
考点:两集合容斥(A1)。
解析:——先加后减重叠。✅ 正确
排除法:无(判断题)。混淆点:交集减一次——重叠元素被数了两次。
关联 · 容斥的直观理解(A6):加多减。
容斥原理三集合形式是?
考点:三集合容斥(A2)。
解析:三集合 = 加单项、减两两交集、加回三重交集——"加奇减偶"。✅ 正确
排除法:无(判断题)。混淆点:三重交集符号是加——被减三次需加回一次。
关联 · 容斥符号错(H1):符号纪律。
判断题:容斥的补集视角 = 求"至少满足一个性质"用并集容斥;求"一个都不满足"用总数减去并集——两者互补。
考点:容斥的补集视角(A3)。
解析:"至少一个"用并集容斥;"一个都不满足"= 总数 − 并集——互补两种问法。✅ 正确
排除法:无(判断题)。混淆点:补集视角在整除计数里最常用(B5)。
关联 · 整除计数(B1):补集应用。
容斥原理最适合的计数场景是?
考点:容斥的应用场景(A4)。
解析:容斥适合"计数至少满足一个性质"且性质有重叠的场景。✅ 正确
排除法:无(判断题)。混淆点:互斥分类用加法原理即可,无需容斥。
关联 · 容斥与加法原理(B6):推广关系。
判断题:容斥原理本质是集合运算的计数版——并集大小 = 各集合大小经"加奇减偶"(单项加、交集减、三重交集加…)修正。
考点:容斥与集合运算(A5)。
解析:容斥 = 集合运算的计数版——并集大小经"加奇减偶"修正。✅ 正确
排除法:无(判断题)。混淆点:符号交替(加、减、加、减…)源自包含-排除。
关联 · 三集合容斥(A2):符号模式。
判断题:容斥的直观 = 先加起来(算重了)再减去重叠、加回三重重叠…——"加多了减、减多了加"。
考点:容斥的直观理解(A6)。
解析:加多了减、减多了加回——逐步修正到每个元素恰好数一次。✅ 正确
排除法:无(判断题)。混淆点:修正的终点是"每个元素恰一次"。
关联 · 两集合容斥(A1):最简形式。
中被 2 整除的数有 个、被 3 整除的有 个、被 6 整除的有 个——被 2 或 3 整除的有多少个?
考点:整除计数(B1)。
解析:被 2 或 3 整除 = (被 6 整除的算了两次)。✅ 正确
排除法:无(判断题)。混淆点: 是两条件的重叠。
关联 · 整除计数容斥(I3):代码版。
班级 50 人:会 C++ 的 30 人、会 Python 的 25 人、两样都会的 10 人——至少会一样的有多少人?
考点:两个条件的容斥(B2)。
解析:至少会一样 = 。✅ 正确
排除法:无(判断题)。混淆点:两样都会的 10 人被数了两次。
关联 · 两集合容斥输出(I1):代码版。
、、、、、、—— 等于?
考点:三个条件的容斥(B3)。
解析:。✅ 正确
排除法:无(判断题)。混淆点:三重交集 +3——最后一步符号别反。
关联 · 三集合容斥输出(I2):代码版。
判断题:错排数可用容斥推出——("每人都不在自己位置" = 总数减去各种"有人在自己位置"的交集)。
考点:容斥与错排(B4)。
解析:——错排是容斥的经典应用。✅ 正确
排除法:无(判断题)。混淆点: = "第 i 个元素在自己位置"。
关联 · 错排与容斥(E4):同一推导。
中既不被 2 也不被 3 整除的数有多少个?
考点:容斥计算实例(B5)。
解析:既不被 2 也不被 3 = 。✅ 正确
排除法:无(判断题)。混淆点:这是"一个都不满足"的补集视角。
关联 · 互质计数(I4):代码版。
判断题:加法原理要求"分类互斥";性质有重叠时不能直接相加——必须用容斥修正。容斥是加法原理的推广。
考点:容斥与加法原理(B6)。
解析:加法原理要求互斥;有重叠必须容斥修正——容斥是加法原理的推广。✅ 正确
排除法:无(判断题)。混淆点:重叠时直接相加 = 经典计数错误。
关联 · 容斥的应用场景(A4):适用边界。
中被 2 或 3 或 5 整除的数有多少个?(被 2:30、被 3:20、被 5:12、被 6:10、被 10:6、被 15:4、被 30:2)
考点:容斥综合(B7)。
解析:。✅ 正确
排除法:无(判断题)。混淆点:三整除的三重交集是"被 30 整除"(2 个)。
关联 · 容斥综合(I6):代码版。
鸽巢原理(抽屉原理)的表述是?
考点:鸽巢原理表述(C1)。
解析: 只鸽子进 个巢 → 必有巢 只。✅ 正确
排除法:无(判断题)。混淆点:条件严格"鸽子数 > 巢数"(H2)。
关联 · 加强版鸽巢(C2):推广。
加强版鸽巢原理: 只鸽子放入 个巢,则?
考点:加强版鸽巢(C2)。
解析: 只进 巢 → 必有巢 只。✅ 正确
排除法:无(判断题)。混淆点: 时退化为基本版。
关联 · 鸽巢综合(J6):代码版。
判断题:任意 个整数中,必有两个数模 同余( 个余数类 = 个鸽巢)。
考点:同余鸽巢(C3)。
解析: 个整数必有两者模 同余( 个余数类)。✅ 正确
排除法:无(判断题)。混淆点:同余鸽巢是"存在性"的最常用形态。
关联 · 同余鸽巢(J2):代码版。
判断题:鸽巢原理是存在性证明工具——它断言"必有"但不告诉你"是哪个"。
考点:鸽巢证明存在性(C4)。
解析:鸽巢只断言"必有"、不指明"是哪个"——存在性证明工具。✅ 正确
排除法:无(判断题)。混淆点:证明题里"存在"两字是鸽巢的信号。
关联 · 鸽巢与构造(C6):构造的起点。
至少多少个人,必有两个人生日在同一个月?
考点:生日鸽巢(C5)。
解析:12 个月 = 12 巢 → 13 人必有同月。✅ 正确
排除法:无(判断题)。混淆点:12 人不保证(可各占一月)。
关联 · 鸽巢条件错(H2):边界纪律。
判断题:鸽巢原理只保证存在、不给出构造——但知道"必存在"常是进一步构造的起点。
考点:鸽巢与构造(C6)。
解析:鸽巢保证存在、不构造——但"必存在"常是构造的起点。✅ 正确
排除法:无(判断题)。混淆点:存在性与构造性是两个层次。
关联 · 鸽巢证明存在性(C4):同义双题。
从 中至少取多少个数,必有两个数之和为 101?
考点:鸽巢综合(C7)。
解析:50 对和为 101 的数对,取 51 个必有一对完整 → 必有和 101。✅ 正确
排除法:无(判断题)。混淆点:取 50 个可各对取 1 个(无和 101)。
关联 · 鸽巢构造(J4):代码版。
卡特兰数 是?
考点:卡特兰数定义(D1)。
解析:卡特兰数 ,。✅ 正确
排除法:无(判断题)。混淆点:不是 、不是 、不是 。
关联 · 卡特兰数公式(D2):公式细节。
卡特兰数第 项的公式是?
考点:卡特兰数公式(D2)。
解析:——分母 是关键。✅ 正确
排除法:无(判断题)。混淆点:忘除 得 (错)。
关联 · 卡特兰公式记错(H3):易错点。
卡特兰数的递推公式是?
考点:卡特兰数递推(D3)。
解析:——按"第一个配对位置"分类。✅ 正确
排除法:无(判断题)。混淆点:不是斐波那契式()。
关联 · 卡特兰数计算(K1):代码版。
判断题: 对括号的合法括号序列个数是卡特兰数 ——如 3 对括号有 5 种合法序列。
考点:括号序列(D4)。
解析: 对括号的合法序列数 = (3 对 = 5 种)。✅ 正确
排除法:无(判断题)。混淆点:合法性 = 任意前缀左括号数 ≥ 右括号数。
关联 · 括号序列计数(K3):代码版。
判断题: 个元素的合法出栈序列个数是卡特兰数 ——如 1、2、3 的合法出栈序列有 5 种。
考点:出栈序列(D5)。
解析: 元素的合法出栈序列数 = (3 元素 = 5 种)。✅ 正确
排除法:无(判断题)。混淆点:非法例 3 1 2(3 出栈时 1 已被 2 压住)。
关联 · 出栈序列计数(K4):代码版。
判断题:卡特兰数还出现在—— 个节点的不同二叉树的个数、 网格不越过对角线的路径数、凸 边形的三角剖分数。
考点:二叉树与路径(D6)。
解析:卡特兰数出现在—— 节点二叉树个数、 网格不越对角线的路径数、凸 边形三角剖分数。✅ 正确
排除法:无(判断题)。混淆点:一个数列、多种结构——识别场景是考点。
关联 · 卡特兰应用(K7):三角剖分代码。
卡特兰数前几项是?
考点:卡特兰数值(D7)。
解析:——要背熟。✅ 正确
排除法:无(判断题)。混淆点:B 是自然数、C 是斐波那契、D 是阶乘。
关联 · 卡特兰数定义(D1):数值表。
错排(Derangement)的定义是?
考点:错排定义(E1)。
解析:错排 = 没有元素在原位置的全错位排列。✅ 正确
排除法:无(判断题)。混淆点:与"逆序排列"(完全颠倒)不同——错排不要求倒序。
关联 · 错排递推(E2):计数方法。
错排数的递推公式是?
考点:错排递推(E2)。
解析:,、。✅ 正确
排除法:无(判断题)。混淆点:系数 不能丢(H4)。
关联 · 错排递推输出(L1):代码版。
错排数前几项是?
考点:错排数值(E3)。
解析:—— 是最常考的。✅ 正确
排除法:无(判断题)。混淆点:B 是阶乘、C 是 、D 是卡特兰。
关联 · 错排数值(L2):代码版。
判断题:错排的容斥推导:——减去"至少一个在自己位置"的交集修正。
考点:错排与容斥(E4)。
解析:——容斥推导。✅ 正确
排除法:无(判断题)。混淆点: = 第 i 元素在原位,容斥"至少一个在原位"。
关联 · 错排容斥计算(L3):代码版。
封信装入 个信封全部装错的方式数是?
考点:信封问题(E5)。
解析: 封信全装错 = ——错排的标准模型。✅ 正确
排除法:无(判断题)。混淆点: 是随便装、 是圆排列、 无关。
关联 · 信封问题(L4):代码版。
4 封信全部装错的方案数是?
考点:错排计算(E6)。
解析:4 封信全错 = 。✅ 正确
排除法:无(判断题)。混淆点:24 是 4!(随便装)。
关联 · 错排数值(E3):常用值。
个不同元素围成一圈的圆排列数是?
考点:圆排列公式(F1)。
解析: 元素圆排列 = ——旋转视为相同。✅ 正确
排除法:无(判断题)。混淆点: 是线排列; 是翻转也视为相同的项链排列。
关联 · 圆排列与线排列(F2):除以 n 的原因。
判断题:圆排列数 = 线排列数 ÷ n——因为每个圆排列旋转 次对应 个线排列。
考点:圆排列与线排列(F2)。
解析:圆排列 = 线排列 ÷ n——每个圆排列旋转 次对应 个线排列。✅ 正确
排除法:无(判断题)。混淆点:除 n 是"对称性修正"的典型。
关联 · 圆排列忘除 n(P5):错误示范。
二项式定理是?
考点:二项式定理(F3)。
解析:。✅ 正确
排除法:无(判断题)。混淆点: 只在 时成立。
关联 · 二项式展开系数(M3):代码版。
判断题:——二项式系数之和()。
考点:二项式系数性质(F4)。
解析:()。✅ 正确
排除法:无(判断题)。混淆点:系数和 = 是高频结论。
关联 · 二项式定理验证(M5):代码版。
的展开系数是?
考点:二项式定理应用(F5)。
解析: 系数 = 杨辉第 4 行 。✅ 正确
排除法:无(判断题)。混淆点: 是 3 次方; 是 5 次方。
关联 · 二项式展开系数(M3):同数据代码题。
判断题:圆排列与二项式定理都是排列组合的基本工具——圆排列处理"循环对称"、二项式定理给出展开系数。
考点:综合(F6)。
解析:圆排列处理循环对称、二项式定理给展开系数——两大基本工具。✅ 正确
排除法:无(判断题)。混淆点:工具定位——按对称性/展开需求选择。
关联 · 计数方法总表(G1):总表。
判断题:计数方法总表——加法原理(互斥相加)、乘法原理(分步相乘)、容斥(重叠修正)、鸽巢(存在性)、卡特兰/错排(特殊结构计数)。
考点:计数方法总表(G1)。
解析:加法(互斥)、乘法(分步)、容斥(重叠)、鸽巢(存在)、卡特兰/错排(特殊结构)——五大件。✅ 正确
排除法:无(判断题)。混淆点:S 组计数题先识别方法再算。
关联 · 问题识别(G2):识别训练。
"至少满足一个性质"的计数问题首选方法是?
考点:问题识别(G2)。
解析:"至少满足一个" → 容斥。✅ 正确
排除法:无(判断题)。混淆点:识别关键词是解题第一步。
关联 · 计数方法总表(G1):方法表。
判断题:(对称性)、(杨辉递推)——两大基本性质。
考点:组合数性质(G3)。
解析:对称性 、杨辉递推——两大基本性质。✅ 正确
排除法:无(判断题)。混淆点:计算化简全靠这两条。
关联 · 组合数性质(J 组 18 章 F4/F6):衔接。
判断题:古典概型概率 = 有利事件数 ÷ 总数——计数是概率的基础,容斥/错排常直接用于概率题。
考点:计数与概率(G4)。
解析:古典概率 = 有利数 ÷ 总数——计数是概率的基础。✅ 正确
排除法:无(判断题)。混淆点:容斥/错排常用于概率分母分子。
关联 · 概率计算(N4):代码版。
中与 6 互质的数有多少个?(即不被 2 或 3 整除)
考点:综合实例(G5)。
解析:与 6 互质 = 不被 2 或 3 整除 = 。✅ 正确
排除法:无(判断题)。混淆点:互质计数 = 容斥补集(B5 同款)。
关联 · 互质计数(I4):代码版。
判断题:计数题三大易错——重叠未修正(忘容斥)、对称未处理(圆排列忘除 n)、特殊结构未识别(卡特兰/错排场景当成普通排列)。
考点:易错总结(G6)。
解析:三大易错——重叠未修正、对称未处理、特殊结构未识别。✅ 正确
排除法:无(判断题)。混淆点:每类对应 P 组错误示范。
关联 · 综合判断(H5):收尾自查。
判断题:三集合容斥的符号是"+ 单 - 双 + 三"——把三重交集写成减号(或漏掉)都会算错。
考点:容斥符号错(H1)。
解析:三集合符号"+ 单 − 双 + 三"——三重交集写减号必错。✅ 正确
排除法:无(判断题)。混淆点:符号交替是容斥的命脉。
关联 · 三集合容斥(A2):符号模式。
判断题:12 个人不一定有同月生日(12 人可各占一月)——鸽巢要求鸽子数 > 巢数,13 人才保证。
考点:鸽巢条件错(H2)。
解析:12 人不保证同月(各占一月)——13 人才保证。✅ 正确
排除法:无(判断题)。混淆点:边界是严格大于(P2)。
关联 · 生日鸽巢(C5):边界实例。
判断题:卡特兰公式的分母是 ()——记成 或漏除都是常见错误。
考点:卡特兰公式记错(H3)。
解析:分母 ——记成 或漏除都是常见错误。✅ 正确
排除法:无(判断题)。混淆点:。
关联 · 卡特兰数公式(D2):公式细节。
判断题:错排递推是 ——忘乘 是常见错误(那样就退化成斐波那契式了)。
考点:错排递推错(H4)。
解析:忘乘 → 退化成斐波那契式——系数是递推的灵魂。✅ 正确
排除法:无(判断题)。混淆点:(正确)vs (错)。
关联 · 错排递推(E2):系数来源。
判断题:以下结论全部正确——"容斥加奇减偶;鸽巢 进 巢必有同巢;卡特兰 ;错排 ;圆排列 "。
考点:综合判断(H5)。
解析:五结论全对——容斥加奇减偶、鸽巢严格大于、卡特兰 、错排 、圆排列 。✅ 正确
排除法:无(判断题)。混淆点:本章五大公式收官自查。
关联 · 本章全部核心结论:收官综合判断题。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int nA = 30, nB = 25, nAB = 10; // |A|、|B|、|A∩B| 05 cout << nA + nB - nAB; // |A∪B| 06 return 0; 07}
单选题:程序输出是?
考点:两集合容斥输出(I1)。
解析:。正确答案 A。
实现要点:两集合容斥 = nA + nB - nAB。手算:重叠数一次。
排除法:B 忘减;C 加了两次;D 无依据。
关联 · 两集合容斥(A1):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int A = 30, B = 25, C = 20; 05 int AB = 10, AC = 8, BC = 6, ABC = 3; 06 cout << A + B + C - AB - AC - BC + ABC; 07 return 0; 08}
单选题:程序输出是?
考点:三集合容斥输出(I2)。
解析:。正确答案 A。
实现要点:三集合 = A+B+C-AB-AC-BC+ABC。手算:加奇减偶。
排除法:B 漏减;C 符号错;D 无依据。
关联 · 三集合容斥(A2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 100; 05 int c2 = n / 2, c3 = n / 3, c6 = n / 6; 06 cout << c2 + c3 - c6; // 被 2 或 3 整除的个数 07 return 0; 08}
单选题:程序输出是?
考点:整除计数容斥(I3)。
解析:。正确答案 A。
实现要点:整除计数 = n/a + n/b - n/lcm(a,b)(互质时 lcm = 积)。手算:被 6 整除的减一次。
排除法:B 加了重叠;C/D 无依据。
关联 · 整除计数(B1):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 100; 05 int c2 = n / 2, c3 = n / 3, c6 = n / 6; 06 cout << n - c2 - c3 + c6; // 不被 2 或 3 整除(与 6 互质) 07 return 0; 08}
单选题:程序输出是?
考点:互质计数(I4)。
解析:。正确答案 A。
实现要点:补集视角 = 总数 − 被 2 − 被 3 + 被 6。手算:验证 33。
排除法:B 是并集;C/D 无依据。
关联 · 容斥的补集视角(A3):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int A = 30, B = 25, AB = 10; 05 cout << ______; // 两集合容斥 06 return 0; 07}
单选题:横线处应填入?(使输出为 45)
考点:容斥填空(I5)。
解析:A + B - AB。正确答案 A。
实现要点:两集合公式填空。手算:验证 45。
排除法:B 加错;C 乘错;D 无依据。
关联 · 两集合容斥输出(I1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 60; 05 int c2 = n / 2, c3 = n / 3, c5 = n / 5; 06 int c6 = n / 6, c10 = n / 10, c15 = n / 15, c30 = n / 30; 07 cout << c2 + c3 + c5 - c6 - c10 - c15 + c30; 08 return 0; 09}
单选题:程序输出是?(1~60 中被 2 或 3 或 5 整除的个数)
考点:容斥综合(I6)。
解析:。正确答案 A。
实现要点:三整除的完整容斥。手算:逐项核对。
排除法:B 是直接相加;C/D 无依据。
关联 · 容斥综合(B7):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int people = 13, months = 12; 05 cout << (people > months ? "SAME-MONTH" : "NOT-SURE"); 06 return 0; 07}
单选题:程序输出是?(13 人 12 月——鸽巢保证同月)
考点:鸽巢判定(J1)。
解析: → SAME-MONTH。正确答案 A。
实现要点:鸽巢判定 = 鸽子数 > 巢数。手算:13 与 12 比较。
排除法:B 是 12 人时;C/D 无依据。
关联 · 生日鸽巢(C5):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 5; // 5 个余数类(模 5) 05 int nums = 6; // 6 个整数 06 cout << (nums > n ? "SAME-REMAINDER" : "NOT-SURE"); 07 return 0; 08}
单选题:程序输出是?(6 个整数模 5,必有两个同余)
考点:同余鸽巢(J2)。
解析:6 个整数 5 个余数类 → 必有同余。正确答案 A。
实现要点:同余鸽巢 = 整数数 > 模数。手算:6 > 5。
排除法:B 是 5 个整数时;C/D 无依据。
关联 · 同余鸽巢(C3):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int days = 366; // 一年最多 366 天 05 int people = 367; // 367 人 06 cout << (people > days ? "SAME-DAY" : "NOT-SURE"); 07 return 0; 08}
单选题:程序输出是?(367 人必有 2 人同一天生日)
考点:生日问题(J3)。
解析:367 > 366 → 必有同天。正确答案 A。
实现要点:生日鸽巢 = 人数 > 天数(含闰年 366)。手算:367 与 366。
排除法:B 是 366 人时;C/D 无依据。
关联 · 生日鸽巢(C5):扩展版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 1~100 分成 50 对和 101 的数对:(1,100),(2,99),...,(50,51) 05 // 取 51 个数,鸽巢保证必有一对两个都取到 06 int pairs = 50, taken = 51; 07 cout << (taken > pairs ? "SUM-101" : "NOT-SURE"); 08 return 0; 09}
单选题:程序输出是?
考点:鸽巢构造(J4)。
解析:51 > 50 对数对 → 必有和 101。正确答案 A。
实现要点:配对构造 + 鸽巢。手算:50 对 + 1 个数。
排除法:B 是 50 个时;C/D 无依据。
关联 · 鸽巢综合(C7):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int pigeons = 10, holes = 9; 05 cout << (______ ? "DOUBLE" : "NOT-SURE"); // 鸽巢判定 06 return 0; 07}
单选题:横线处应填入?(使输出为 DOUBLE)
考点:鸽巢填空(J5)。
解析:pigeons > holes。正确答案 A。
实现要点:严格大于判定。手算:10 > 9。
排除法:B 反向;C 相等不保证;D 无依据。
关联 · 鸽巢原理表述(C1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 加强版:kn+1 只鸽子 n 个巢 → 某巢 ≥ k+1 只 05 int k = 2, n = 5, pigeons = k * n + 1; 06 cout << pigeons / n + (pigeons % n ? 1 : 0); // 至少某巢的下限 07 return 0; 08}
单选题:程序输出是?(11 只鸽子 5 个巢,某巢至少 ⌈11/5⌉ = 3 只)
考点:鸽巢综合(J6)。
解析:——某巢至少 3 只。正确答案 A。
实现要点:加强版下限 = ⌈鸽子/巢⌉。手算:11/5 上取整。
排除法:B 是下取整;C/D 无依据。
关联 · 加强版鸽巢(C2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 3; 05 long long c[4] = {0}; 06 c[0] = 1; 07 for (int i = 1; i <= n; i++) { 08 c[i] = 0; 09 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 10 } 11 cout << c[3]; // C(3) = 5 12 return 0; 13}
单选题:程序输出是?
考点:卡特兰数计算(K1)。
解析:递推得 。正确答案 A。
实现要点:卡特兰递推 。手算: 展开。
排除法:B 是 C4;C/D 无依据。
关联 · 卡特兰数递推(D3):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 4; 05 long long c[5] = {0}; 06 c[0] = 1; 07 for (int i = 1; i <= n; i++) 08 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 09 cout << c[4]; // C(4) = 14 10 return 0; 11}
单选题:程序输出是?
考点:卡特兰递推(K2)。
解析:。正确答案 A。
实现要点:与 K1 同框架、n=4。手算:。
排除法:B 是 C3;C 是 C5;D 无依据。
关联 · 卡特兰数值(D7):常用值。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 3 对括号的合法序列数 = C(3) = 5 05 int n = 3; 06 long long c[4] = {0}; 07 c[0] = 1; 08 for (int i = 1; i <= n; i++) 09 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 10 cout << c[n]; 11 return 0; 12}
单选题:程序输出是?(3 对括号的合法括号序列个数)
考点:括号序列计数(K3)。
解析:3 对括号合法序列 = 。正确答案 A。
实现要点:场景 → 卡特兰识别。手算:列出 5 种验证。
排除法:B 是 3!;C/D 无依据。
关联 · 括号序列(D4):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 3 个元素(1、2、3)的合法出栈序列数 = C(3) = 5 05 // 如 3 2 1、1 3 2、2 1 3、2 3 1、1 2 3;3 1 2 不合法 06 int n = 3; 07 long long c[4] = {0}; 08 c[0] = 1; 09 for (int i = 1; i <= n; i++) 10 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 11 cout << c[n]; 12 return 0; 13}
单选题:程序输出是?
考点:出栈序列计数(K4)。
解析:3 元素合法出栈序列 = 。正确答案 A。
实现要点:出栈序列 = 卡特兰场景。手算:列 5 种合法序列。
排除法:B 是 3!(含非法 3 1 2);C/D 无依据。
关联 · 出栈序列(D5):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long C(int n, int k) { 04 long long r = 1; 05 for (int i = 0; i < k; i++) r = r * (n - i) / (i + 1); 06 return r; 07} 08int main() { 09 int n = 3; 10 cout << C(2 * n, n) / (n + 1); // C(6,3)/4 = 20/4 = 5 11 return 0; 12}
单选题:程序输出是?
考点:卡特兰公式(K5)。
解析:。正确答案 A。
实现要点:公式版 。手算:C(6,3) = 20。
排除法:B 忘了除;C 是分母;D 无依据。
关联 · 卡特兰数公式(D2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 4; 05 long long c[5] = {0}; 06 c[0] = ______; // C(0) = 1 07 for (int i = 1; i <= n; i++) 08 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 09 cout << c[4]; 10 return 0; 11}
单选题:横线处应填入?(使输出为 14)
考点:卡特兰填空(K6)。
解析:初值 1(C(0) = 1)。正确答案 A。
实现要点:卡特兰递推初值 C(0)=1。手算:验证 C4 = 14。
排除法:B 初值 0 全零;C/D 无依据。
关联 · 卡特兰初值错(P3):错误对照。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 凸五边形(n+2 = 5 → n = 3)的三角剖分数 = C(3) = 5 05 int n = 3; 06 long long c[4] = {0}; 07 c[0] = 1; 08 for (int i = 1; i <= n; i++) 09 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 10 cout << c[n]; 11 return 0; 12}
单选题:程序输出是?(凸五边形的三角剖分方式数)
考点:卡特兰应用(K7)。
解析:凸五边形三角剖分 = 。正确答案 A。
实现要点:凸 n+2 边形剖分数 = 。手算:五边形 → n=3。
排除法:B/C/D 无依据。
关联 · 二叉树与路径(D6):应用场景。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 long long d[6] = {0}; 05 d[1] = 0; d[2] = 1; 06 for (int i = 3; i <= 5; i++) d[i] = (i - 1) * (d[i - 1] + d[i - 2]); 07 cout << d[4]; 08 return 0; 09}
单选题:程序输出是?(D(4))
考点:错排递推输出(L1)。
解析:。正确答案 A。
实现要点:错排递推 。手算:逐项递推。
排除法:B 是 D5;C/D 无依据。
关联 · 错排递推(E2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 long long d[6] = {0}; 05 d[1] = 0; d[2] = 1; 06 for (int i = 3; i <= 5; i++) d[i] = (i - 1) * (d[i - 1] + d[i - 2]); 07 for (int i = 1; i <= 5; i++) cout << d[i] << " "; 08 return 0; 09}
单选题:程序输出是?
考点:错排数值(L2)。
解析:0 1 2 9 44。正确答案 A。
实现要点:错排数列前 5 项。手算:递推验证。
排除法:B 是阶乘;C 是斐波那契;D 是卡特兰。
关联 · 错排数值(E3):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long fact(int n) { return n <= 1 ? 1 : n * fact(n - 1); } 04long long C(int n, int k) { 05 long long r = 1; 06 for (int i = 0; i < k; i++) r = r * (n - i) / (i + 1); 07 return r; 08} 09int main() { 10 // D(4) = 4! - C(4,1)·3! + C(4,2)·2! - C(4,3)·1! + C(4,4)·0! 11 int n = 4; 12 long long d = 0; 13 for (int k = 0; k <= n; k++) 14 d += (k % 2 ? -1 : 1) * C(n, k) * fact(n - k); 15 cout << d; 16 return 0; 17}
单选题:程序输出是?
考点:错排容斥计算(L3)。
解析:。正确答案 A。
实现要点:容斥式 。手算:逐项加减。
排除法:B 是 4!;C/D 无依据。
关联 · 错排与容斥(E4):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 3 封信全部装错 = D(3) = 2 05 long long d[4] = {0}; 06 d[1] = 0; d[2] = 1; 07 for (int i = 3; i <= 3; i++) d[i] = (i - 1) * (d[i - 1] + d[i - 2]); 08 cout << d[3]; 09 return 0; 10}
单选题:程序输出是?
考点:信封问题(L4)。
解析:。正确答案 A。
实现要点:3 封全错 = 2 种(循环移位两个方向)。手算:枚举。
排除法:B 是 3!;C/D 无依据。
关联 · 信封问题(E5):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 long long d[6] = {0}; 05 d[1] = 0; d[2] = 1; 06 for (int i = 3; i <= 5; i++) d[i] = ______; 07 cout << d[5]; 08 return 0; 09}
单选题:横线处应填入?(使输出为 44)
考点:错排填空(L5)。
解析:(i - 1) * (d[i - 1] + d[i - 2])。正确答案 A。
实现要点:递推公式填空。手算:验证 D5 = 44。
排除法:B 漏乘(斐波那契式);C 是阶乘式;D 无依据。
关联 · 错排递推错(H4):错误对照。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 5 封信 5 个信封,恰有 2 封装对(其余 3 封全错) 05 long long d[4] = {0}; 06 d[1] = 0; d[2] = 1; 07 d[3] = 2 * (d[2] + d[1]); // D(3) = 2 08 long long C = 10; // C(5,2) = 10 09 cout << C * d[3]; 10 return 0; 11}
单选题:程序输出是?(恰 2 封装对的方案数 = C(5,2) × D(3))
考点:错排综合(L6)。
解析:。正确答案 A。
实现要点:恰 k 个对位 = 。手算:选对的 × 其余全错。
排除法:B 漏乘 D3;C/D 无依据。
关联 · 错排计算(E6):组合应用。
01#include <bits/stdc++.h> 02using namespace std; 03long long fact(int n) { return n <= 1 ? 1 : n * fact(n - 1); } 04int main() { 05 int n = 5; 06 cout << fact(n - 1); // 5 人围圆桌 = 4! 07 return 0; 08}
单选题:程序输出是?
考点:圆排列输出(M1)。
解析: 人圆桌 = 。正确答案 A。
实现要点:圆排列 = (n-1)!。手算:4! = 24。
排除法:B 是 5!(线排列);C 是 5!/2;D 无依据。
关联 · 圆排列公式(F1):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long fact(int n) { return n <= 1 ? 1 : n * fact(n - 1); } 04int main() { 05 cout << fact(6); 06 return 0; 07}
单选题:程序输出是?
考点:阶乘计算(M2)。
解析:。正确答案 A。
实现要点:递归阶乘。手算:连乘。
排除法:B 是 5!;C 是 7!;D 无依据。
关联 · 阶乘(J 组 18 章 M1):衔接。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // (a+b)^4 的系数 = 杨辉第 5 行 05 int c[5][5] = {0}; 06 for (int i = 0; i <= 4; i++) { 07 c[i][0] = c[i][i] = 1; 08 for (int j = 1; j < i; j++) 09 c[i][j] = c[i - 1][j - 1] + c[i - 1][j]; 10 } 11 for (int j = 0; j <= 4; j++) cout << c[4][j] << " "; 12 return 0; 13}
单选题:程序输出是?
考点:二项式展开系数(M3)。
解析:杨辉第 4 行 1 4 6 4 1。正确答案 A。
实现要点: 系数 = 杨辉第 n 行。手算:递推填表。
排除法:B 是 3 次;C 是 5 次;D 缺端点。
关联 · 二项式定理应用(F5):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int c[6][6] = {0}; 05 for (int i = 0; i <= 5; i++) { 06 c[i][0] = c[i][i] = 1; 07 for (int j = 1; j < i; j++) 08 c[i][j] = c[i - 1][j - 1] + c[i - 1][j]; 09 } 10 for (int j = 0; j <= 5; j++) cout << c[5][j] << " "; 11 return 0; 12}
单选题:程序输出是?
考点:杨辉行输出(M4)。
解析:第 5 行 1 5 10 10 5 1。正确答案 A。
实现要点:杨辉三角递推。手算:逐行相加。
排除法:B 是第 4 行;C 缺端点;D 是第 6 行。
关联 · 二项式展开系数(M3):相邻行对照。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // (1+1)^5 = 2^5 = 32 = 系数和 05 int c[6][6] = {0}; 06 long long sum = 0; 07 for (int i = 0; i <= 5; i++) { 08 c[i][0] = c[i][i] = 1; 09 for (int j = 1; j < i; j++) 10 c[i][j] = c[i - 1][j - 1] + c[i - 1][j]; 11 } 12 for (int j = 0; j <= 5; j++) sum += c[5][j]; 13 cout << sum; 14 return 0; 15}
单选题:程序输出是?()
考点:二项式定理验证(M5)。
解析:第 5 行系数和 = 。正确答案 A。
实现要点:系数和 = 。手算:。
排除法:B 是 2^4;C 是 2^6;D 无依据。
关联 · 二项式系数性质(F4):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long C(int n, int k) { 04 long long r = 1; 05 for (int i = 0; i < k; i++) r = r * (n - i) / (i + 1); 06 return r; 07} 08int main() { 09 cout << C(10, 3); // 10 人选 3 人 10 return 0; 11}
单选题:程序输出是?
考点:组合应用(M6)。
解析:。正确答案 A。
实现要点:乘法式组合数。手算:。
排除法:B 是 A(10,3);C/D 无依据。
关联 · 组合数计算(N1):同法双题。
01#include <bits/stdc++.h> 02using namespace std; 03long long C(int n, int k) { 04 long long r = 1; 05 for (int i = 0; i < k; i++) r = r * (n - i) / (i + 1); 06 return r; 07} 08int main() { 09 cout << C(8, 2); 10 return 0; 11}
单选题:程序输出是?
考点:组合数计算(N1)。
解析:。正确答案 A。
实现要点:。手算:直接算。
排除法:B 是 A(8,2);C/D 无依据。
关联 · 组合应用(M6):同法双题。
01#include <bits/stdc++.h> 02using namespace std; 03long long C(int n, int k) { 04 long long r = 1; 05 for (int i = 0; i < k; i++) r = r * (n - i) / (i + 1); 06 return r; 07} 08int main() { 09 // 1~20 中不被 2 或 3 整除:20 - 10 - 6 + 3 10 cout << 20 - 20 / 2 - 20 / 3 + 20 / 6; 11 return 0; 12}
单选题:程序输出是?
考点:容斥加组合(N2)。
解析:。正确答案 A。
实现要点:补集容斥。手算:验证 7 个数(1、5、7、11、13、17、19)。
排除法:B 是并集;C/D 无依据。
关联 · 互质计数(I4):同法双题。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // "4 对括号的合法序列数" → 卡特兰 C(4) = 14 05 int n = 4; 06 long long c[5] = {0}; 07 c[0] = 1; 08 for (int i = 1; i <= n; i++) 09 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 10 cout << c[n]; 11 return 0; 12}
单选题:程序输出是?
考点:计数识别(N3)。
解析:4 对括号 = 卡特兰 。正确答案 A。
实现要点:场景识别 → 卡特兰递推。手算:递推表。
排除法:B 是 C3;C 是 C5;D 无依据。
关联 · 括号序列(D4):应用识别。
01#include <bits/stdc++.h> 02using namespace std; 03long long fact(int n) { return n <= 1 ? 1 : n * fact(n - 1); } 04int main() { 05 // 3 封信随机装 3 个信封,全部装错的概率 = D(3)/3! = 2/6 06 int D3 = 2, total = 6; 07 cout << D3 << "/" << total; 08 return 0; 09}
单选题:程序输出是?
考点:概率计算(N4)。
解析:全错概率 = 。正确答案 A。
实现要点:古典概型 = 有利 ÷ 总数。手算:D3 = 2、3! = 6。
排除法:B/C/D 无依据。
关联 · 计数与概率(G4):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long fact(int n) { return n <= 1 ? 1 : n * fact(n - 1); } 04int main() { 05 // 4 人围圆桌、其中两人必须相邻:捆绑成 1 个 → 3 个"整体"圆排列 × 内部 2! 06 cout << fact(3 - 1) * 2; 07 return 0; 08}
单选题:程序输出是?(3 个整体圆排列 ,内部 )
考点:综合计数(N5)。
解析:捆绑后 3 个整体圆排列 × 内部 2! = 。正确答案 A。
实现要点:捆绑 + 圆排列组合。手算:。
排除法:B 忘了圆排列除 3;C/D 无依据。
关联 · 圆排列公式(F1):组合应用。
01#include <bits/stdc++.h> 02using namespace std; 03long long C(int n, int k) { 04 long long r = 1; 05 for (int i = 0; i < k; i++) r = r * (n - i) / (i + 1); 06 return r; 07} 08int main() { 09 cout << C(20, 10); 10 return 0; 11}
单选题:程序输出是?(C(20,10) = 184756)
考点:大组合数(N6)。
解析:。正确答案 A。
实现要点:乘法式防溢出(先乘后除交替)。手算:程序验证。
排除法:B 是一半;C 是 C(20,9);D 差 1。
关联 · 组合数计算(N1):大数版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 100; 05 int c2 = n / 2, c3 = n / 3, c6 = n / 6; 06 cout << n - c2 - c3 + ______; // 不被 2 或 3 整除 07 return 0; 08}
单选题:横线处应填入?(使输出为 33)
考点:容斥填空(O1)。
解析:补集最后加回 c6。正确答案 A。
实现要点:。手算:验证 33。
排除法:B/C 符号错;D 无依据。
关联 · 互质计数(I4):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int people = 13, months = 12; 05 cout << (______ ? "SAME" : "NOT-SURE"); 06 return 0; 07}
单选题:横线处应填入?(使输出为 SAME)
考点:鸽巢填空(O2)。
解析:people > months。正确答案 A。
实现要点:严格大于判定。手算:13 > 12。
排除法:B 相等不保证;C 反向;D 无依据。
关联 · 鸽巢判定(J1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 3; 05 long long c[4] = {0}; 06 c[0] = 1; 07 for (int i = 1; i <= n; i++) 08 for (int j = 0; j < i; j++) c[i] += ______; 09 cout << c[3]; 10 return 0; 11}
单选题:横线处应填入?(使输出为 5)
考点:卡特兰填空(O3)。
解析:c[j] * c[i - 1 - j]。正确答案 A。
实现要点:递推乘积项。手算:验证 C3 = 5。
排除法:B 是加法;C/D 无依据。
关联 · 卡特兰数递推(D3):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 long long d[6] = {0}; 05 d[1] = 0; 06 d[2] = ______; // D(2) = 1 07 for (int i = 3; i <= 5; i++) d[i] = (i - 1) * (d[i - 1] + d[i - 2]); 08 cout << d[4]; 09 return 0; 10}
单选题:横线处应填入?(使输出为 9)
考点:错排填空(O4)。
解析:初值 1(D(2) = 1)。正确答案 A。
实现要点:错排双初值 D(1)=0、D(2)=1。手算:验证 D4 = 9。
排除法:B/C/D 无依据。
关联 · 错排递推(E2):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03long long fact(int n) { return n <= 1 ? 1 : n * fact(n - 1); } 04int main() { 05 int n = 6; 06 cout << fact(______); // n 人圆排列 = (n-1)! 07 return 0; 08}
单选题:横线处应填入?(使输出为 120)
考点:圆排列填空(O5)。
解析:n - 1((n-1)!)。正确答案 A。
实现要点:圆排列阶乘参数。手算:5! = 120。
排除法:B 是线排列;C/D 无依据。
关联 · 圆排列公式(F1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int c[5][5] = {0}; 05 for (int i = 0; i <= 4; i++) { 06 c[i][0] = c[i][i] = 1; 07 for (int j = 1; j < i; j++) 08 c[i][j] = ______; // 杨辉递推 09 } 10 cout << c[4][2]; 11 return 0; 12}
单选题:横线处应填入?(使输出为 6)
考点:二项式填空(O6)。
解析:c[i - 1][j - 1] + c[i - 1][j]。正确答案 A。
实现要点:杨辉递推。手算:C(4,2) = 6。
排除法:B 乘 2;C/D 无依据。
关联 · 二项式展开系数(M3):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03long long C(int n, int k) { 04 long long r = 1; 05 for (int i = 0; i < k; i++) r = r * ______ / (i + 1); 06 return r; 07} 08int main() { 09 cout << C(10, 3); 10 return 0; 11}
单选题:横线处应填入?(使输出为 120)
考点:组合数填空(O7)。
解析:(n - i)——连乘分子递减。正确答案 A。
实现要点:。手算:验证 C(10,3)。
排除法:B 递增;C 常数;D 无依据。
关联 · 组合数计算(N1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 60; 05 int c2 = n / 2, c3 = n / 3, c5 = n / 5; 06 int c6 = n / 6, c10 = n / 10, c15 = n / 15; 07 // 错误:漏了三重交集 +c30 08 cout << c2 + c3 + c5 - c6 - c10 - c15; 09 return 0; 10}
单选题:程序输出是?(漏 +c30 的错误结果;正确应为 44)
考点:容斥漏项(P1)。
解析:漏 +c30 → (正确 44)。正确答案 A。
实现要点:三集合三重交集必须加回。手算:。
排除法:B 是正确值;C/D 无依据。
关联 · 容斥符号错(H1):错误示范。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int people = 12, months = 12; 05 cout << (people >= months ? "SAME" : "NOT-SURE"); // 错误:>= 而非 > 06 return 0; 07}
单选题:程序输出是?(12 人 12 月不保证同月——12 人可各占一月,判定应为 NOT-SURE)
考点:鸽巢边界错(P2)。
解析:>= 误判——12 人 12 月不保证同月,输出 SAME 是错误结论。正确答案 A。
实现要点:鸽巢边界严格 >。手算:12 人可各占一月。
排除法:B 是正确判定;C/D 无依据。
关联 · 鸽巢条件错(H2):错误示范。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 3; 05 long long c[4] = {0}; 06 c[0] = 0; // 错误:C(0) 应为 1 07 for (int i = 1; i <= n; i++) 08 for (int j = 0; j < i; j++) c[i] += c[j] * c[i - 1 - j]; 09 cout << c[3]; 10 return 0; 11}
单选题:程序输出是?(C(0)=0 导致全部算出 0)
考点:卡特兰初值错(P3)。
解析:C(0)=0 → 递推全零 → 输出 0(正确 5)。正确答案 A。
实现要点:卡特兰初值 C(0)=1 是根基。手算:全零递推。
排除法:B 是正确值;C/D 无依据。
关联 · 卡特兰数定义(D1):错误示范。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 long long d[6] = {0}; 05 d[1] = 1; // 错误:D(1) 应为 0 06 d[2] = 1; 07 for (int i = 3; i <= 5; i++) d[i] = (i - 1) * (d[i - 1] + d[i - 2]); 08 cout << d[3]; 09 return 0; 10}
单选题:程序输出是?(D(1)=1 的初值错误使 D(3) 变成 4,正确应为 2)
考点:错排初值错(P4)。
解析:D(1)=1 → D(3)=4(正确 2)。正确答案 A。
实现要点:错排双初值不能错。手算:。
排除法:B 是正确值;C/D 无依据。
关联 · 错排递推错(H4):错误示范。
01#include <bits/stdc++.h> 02using namespace std; 03long long fact(int n) { return n <= 1 ? 1 : n * fact(n - 1); } 04int main() { 05 int n = 5; 06 cout << fact(n); // 错误:忘了圆排列要除 n(应 (n-1)! = 24) 07 return 0; 08}
单选题:程序输出是?(把圆排列当线排列算的结果)
考点:圆排列忘除 n(P5)。
解析:输出 120(线排列 5!),正确圆排列是 24。正确答案 A。
实现要点:圆排列 = n!/n = (n-1)!。手算:120/5 = 24。
排除法:B 是正确值;C/D 无依据。
关联 · 圆排列与线排列(F2):错误示范。
判断题:以下结论全部正确——"容斥符号加奇减偶;鸽巢边界是鸽子 > 巢数(严格大于);卡特兰 C(0) = 1 初值;错排 D(1) = 0、D(2) = 1;圆排列要除 n"。
考点:综合判断(P6)。
解析:五结论全对——容斥符号、鸽巢严格大于、卡特兰初值 1、错排初值 0/1、圆排列除 n。✅ 正确
实现要点:本章五大公式与边界收官自查。手算:逐条对照本章代码。
排除法:无(判断题)。混淆点:边界与初值是本章易错集中地。
关联 · 本章全部核心结论:收官综合判断题。