林老师 · 客观题题库 · 第 18 章 数论与组合计数基础 · 知识细节练习

第 18 章 数论与组合计数基础 · 知识细节练习

100 题 · 每题对应一个知识细节 · 全部原创
真题
复刻
试卷编号ORIG-第18章数论与组合计数基础-知识细节练习
题目总数100 题 · 100 分
试卷类型客观题
考生须知:
① 本卷共 16 大部分,合计 100 题 · 100 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 100 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

数论基础概念

6 QUESTIONS · 2 POINTS EACH
第 1 题 A1 未作答

判断题:aa 能被 bb 整除(记 bab \mid a)当且仅当存在整数 kk 使 a=kba = kb,即 a % b == 0

(1 分)
第 2 题 A2 未作答

判断题:素数 = 大于 11 的自然数中,只有 11 和它本身两个正因数。

(1 分)
第 3 题 A3 未作答

判断题:自然数 11 既不是素数也不是合数。

(1 分)
第 4 题 A4 未作答

单选题:1212 的正约数共有几个?

(1 分)
第 5 题 A5 未作答

判断题:任何大于 11 的自然数都可以唯一地分解成质因数的乘积(不计顺序)——整数唯一分解定理。

(1 分)
第 6 题 A6 未作答

单选题:两个奇数之和是?

(1 分)

最大公约数与最小公倍数

7 QUESTIONS · 2 POINTS EACH
第 7 题 B1 未作答

单选题:gcd(24,36)\gcd(24, 36) 的值是?

(1 分)
第 8 题 B2 未作答

判断题:gcd(a,b)=gcd(b,a%b)\gcd(a, b) = \gcd(b, a \% b),当 b=0b = 0 时返回 aa——辗转相除,过程一定终止。

(1 分)
第 9 题 B3 未作答

判断题:gcd\gcd 取两数质因数分解中相同质因子的最低次幂(没有的质因子幂次按 00 计)。

(1 分)
第 10 题 B4 未作答

单选题:lcm(4,6)\mathrm{lcm}(4, 6) 的值是?

(1 分)
第 11 题 B5 未作答

判断题:gcd(a,b)=1\gcd(a, b) = 1aabb 互质;两个不同的质数一定互质。

(1 分)
第 12 题 B6 未作答

单选题:gcd(252,105)\gcd(252, 105) 的值是?

(1 分)
第 13 题 B7 未作答

判断题:gcd(a,b)=gcd(b,ab)\gcd(a, b) = \gcd(b, a - b)aba \geq b)——更相减损的原理,与取模版本质相同。

(1 分)

素数判定与筛法

7 QUESTIONS · 2 POINTS EACH
第 14 题 C1 未作答

判断题:判断 nn 是否为素数:用 2n12 \sim n-1 逐个试除;优化后只需试到 n\sqrt{n}

(1 分)
第 15 题 C2 未作答

单选题:判断 9797 是否为素数,试除只需进行到哪个范围?

(1 分)
第 16 题 C3 未作答

判断题:埃氏筛:从 22 开始,把每个质数的倍数全部标记为合数;最后没被标记的就是质数。

(1 分)
第 17 题 C4 未作答

单选题:用埃氏筛筛出 nn 以内的所有质数,时间复杂度约为?

(1 分)
第 18 题 C5 未作答

判断题:线性筛(欧拉筛):每个合数只被它的最小质因子筛掉一次,时间复杂度 O(n)O(n)

(1 分)
第 19 题 C6 未作答

单选题:筛法最适合批量求?

(1 分)
第 20 题 C7 未作答

判断题:单独判断一个大数用试除法;要批量筛出很多数内的质数用筛法。

(1 分)

取整与模运算

7 QUESTIONS · 2 POINTS EACH
第 21 题 D1 未作答

单选题:7/2\lfloor 7/2 \rfloor7÷27 \div 2 向下取整)等于?

(1 分)
第 22 题 D2 未作答

单选题:nn 件物品、每袋最多装 mm 件,需要的袋子数 =?

(1 分)
第 23 题 D3 未作答

判断题:a % b = aa 除以 bb 的余数(b>0b > 0),范围 0a%b<b0 \leq a \% b < b

(1 分)
第 24 题 D4 未作答

判断题:C++ 中 (-7) % 3 的结果是 1-1(余数符号与被除数一致,不是数学上的 22)。

(1 分)
第 25 题 D5 未作答

判断题:(a+b)%m=(a%m+b%m)%m(a + b) \% m = (a \% m + b \% m) \% m——加法可以先拆开取模再合并。

(1 分)
第 26 题 D6 未作答

判断题:(a×b)%m=(a%m)×(b%m)%m(a \times b) \% m = (a \% m) \times (b \% m) \% m——乘法同理,可用于防溢出。

(1 分)
第 27 题 D7 未作答

判断题:模运算对除法不直接成立:(a/b)%m(a / b) \% m 不能拆成 (a%m)/(b%m)(a \% m) / (b \% m)——正确做法需要逆元(提高级内容)。

(1 分)

加法与乘法原理

6 QUESTIONS · 2 POINTS EACH
第 28 题 E1 未作答

判断题:加法原理:做一件事有 kk互斥方案,第 ii 类有 mim_i 种做法,总做法数 =m1++mk= m_1 + \cdots + m_k

(1 分)
第 29 题 E2 未作答

判断题:乘法原理:做一件事分 kk 步,第 ii 步有 mim_i 种做法,总做法数 =m1××mk= m_1 \times \cdots \times m_k

(1 分)
第 30 题 E3 未作答

单选题:从 AABB33 条路、从 BBCC22 条路,从 AABBCC 共有多少种走法?

(1 分)
第 31 题 E4 未作答

单选题:甲到乙可乘汽车 22 班或高铁 33 班;乙到丙只能乘船 22 班。甲经乙到丙共有多少种走法?

(1 分)
第 32 题 E5 未作答

判断题:计数题可以先枚举验证小规模答案,再用加法/乘法原理推广到大规模。

(1 分)
第 33 题 E6 未作答

判断题:加法原理的"类"必须互斥(互不重叠),否则会重复计数。

(1 分)

排列与组合

7 QUESTIONS · 2 POINTS EACH
第 34 题 F1 未作答

单选题:排列数 A(5,2)A(5, 2) 等于?

(1 分)
第 35 题 F2 未作答

单选题:44 个不同元素的全排列共有几种?

(1 分)
第 36 题 F3 未作答

单选题:组合数 C(5,2)C(5, 2) 等于?

(1 分)
第 37 题 F4 未作答

判断题:C(n,k)=C(n,nk)C(n, k) = C(n, n-k)——"选 kk 个留下"与"选 nkn-k 个留下"一一对应。

(1 分)
第 38 题 F5 未作答

判断题:排列与顺序有关(用 AA)、组合与顺序无关(用 CC)——"选班委"用 CC、"排座位"用 AA

(1 分)
第 39 题 F6 未作答

判断题:C(n,k)=C(n1,k)+C(n1,k1)C(n, k) = C(n-1, k) + C(n-1, k-1)——杨辉三角的递推本质。

(1 分)
第 40 题 F7 未作答

单选题:C(3,0)+C(3,1)+C(3,2)+C(3,3)C(3,0) + C(3,1) + C(3,2) + C(3,3) 等于?

(1 分)

组合计数技巧

6 QUESTIONS · 2 POINTS EACH
第 41 题 G1 未作答

单选题:33 个男生、22 个女生排成一排,两个女生必须相邻,共有多少种排法?

(1 分)
第 42 题 G2 未作答

单选题:33 个男生、22 个女生排成一排,两个女生不相邻,共有多少种排法?

(1 分)
第 43 题 G3 未作答

单选题:把 77相同的苹果分给 33 个人,每人至少 1 个,共有多少种分法?

(1 分)
第 44 题 G4 未作答

单选题:66 个人排成一排,甲必须站在最前面,共有多少种排法?

(1 分)
第 45 题 G5 未作答

单选题:把单词 AAB33 个字母全部排成一行(两个 AA 相同),共有几种不同排列?

(1 分)
第 46 题 G6 未作答

判断题:"必须相邻"用捆绑、"不能相邻"用插空、"相同物品分组"用隔板——先识别约束再选技巧。

(1 分)

易错综合

4 QUESTIONS · 2 POINTS EACH
第 47 题 H1 未作答

单选题:关于自然数 11,下列说法正确的是?

(1 分)
第 48 题 H2 未作答

单选题:C(3,5)C(3, 5)k>nk > n)按组合意义应为?

(1 分)
第 49 题 H3 未作答

判断题:埃氏筛从 p×pp \times p 开始标记 pp 的倍数(而不是 2p2p),因为小于 p2p^2 的合数已被更小的质数标记过。

(1 分)
第 50 题 H4 未作答

判断题:以下结论全部正确——"gcd(12,18)=6\gcd(12,18)=6lcm(12,18)=36\mathrm{lcm}(12,18)=36,且 12×18=gcd×lcm12 \times 18 = \gcd \times \mathrm{lcm};两个不同的质数互质;C(4,2)=C(4,2)C(4,2)=C(4,2) 对称成立"。

(1 分)

整除与质数代码

6 QUESTIONS · 2 POINTS EACH
第 51 题 I1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 17;
05    bool prime = true;
06    for (int i = 2; i * i <= n; i++)    // 试除到 sqrt(n)
07        if (n % i == 0) prime = false;
08    cout << (prime ? "YES" : "NO");
09    return 0;
10}

单选题:程序输出是?

(1 分)
第 52 题 I2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 100, cnt = 0;
05    for (int i = 2; i * i <= n; i++) cnt++;   // 统计循环执行次数
06    cout << cnt;
07    return 0;
08}

单选题:程序输出是?

(1 分)
第 53 题 I3 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 12, cnt = 0;
05    for (int i = 1; i <= n; i++)
06        if (n % i == 0) cnt++;    // 统计约数个数
07    cout << cnt;
08    return 0;
09}

单选题:程序输出是?

(1 分)
第 54 题 I4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 12;
05    for (int i = 1; i <= n; i++)
06        if (n % i == 0) cout << i << " ";   // 输出全部约数
07    return 0;
08}

单选题:程序输出是?

(1 分)
第 55 题 I5 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 60;
05    for (int i = 2; i * i <= n; i++)
06        while (n % i == 0) { cout << i << " "; n /= i; }   // 除尽当前质因子
07    if (n > 1) cout << n;        // 剩下的 > 1 的部分也是质因子
08    return 0;
09}

单选题:程序输出是?

(1 分)
第 56 题 I6 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 60, cnt = 0;
05    for (int i = 2; i * i <= n; i++)
06        while (n % i == 0) { cnt++; n /= i; }
07    if (n > 1) cnt++;
08    cout << cnt;                 // 质因子个数(按重数计)
09    return 0;
10}

单选题:程序输出是?

(1 分)

gcd 与 lcm 代码

6 QUESTIONS · 2 POINTS EACH
第 57 题 J1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 48, b = 36;
05    while (b) {                 // 辗转相除
06        int t = a % b;
07        a = b; b = t;
08    }
09    cout << a;
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 58 题 J2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 48, b = 36;
05    while (b) {
06        int t = a % b;
07        cout << t << " ";       // 输出每次的余数
08        a = b; b = t;
09    }
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 59 题 J3 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 4, b = 6;
05    int g = a, x = b;
06    while (x) {                 // 先求 gcd
07        int t = g % x; g = x; x = t;
08    }
09    cout << a / g * b;          // lcm = a * b / gcd
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 60 题 J4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 48, b = 36;
05    while (a != b) {            // 更相减损
06        if (a > b) a -= b;
07        else b -= a;
08    }
09    cout << a;
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 61 题 J5 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a[4] = {24, 36, 48, 60};
05    int g = a[0];
06    for (int i = 1; i < 4; i++) {       // 逐个求 gcd
07        int x = g, y = a[i];
08        while (y) { int t = x % y; x = y; y = t; }
09        g = x;
10    }
11    cout << g;
12    return 0;
13}

单选题:程序输出是?

(1 分)
第 62 题 J6 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 24, b = 36;         // 分数 24/36
05    int x = a, y = b;
06    while (y) { int t = x % y; x = y; y = t; }   // x = gcd
07    cout << a / x << "/" << b / x;
08    return 0;
09}

单选题:程序输出是?

(1 分)
拾壹

筛法代码

7 QUESTIONS · 2 POINTS EACH
第 63 题 K1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    bool isp[20] = {0};         // false = 暂定质数
05    for (int i = 2; i <= 19; i++)
06        if (!isp[i])
07            for (int j = i * i; j <= 19; j += i) isp[j] = true;   // 标记倍数
08    for (int i = 2; i <= 19; i++)
09        if (!isp[i]) cout << i << " ";
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 64 题 K2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 20, cnt = 0;
05    bool isp[21] = {0};
06    for (int i = 2; i <= n; i++)
07        if (!isp[i]) {
08            cnt++;
09            for (int j = i * i; j <= n; j += i) isp[j] = true;
10        }
11    cout << cnt;
12    return 0;
13}

单选题:程序输出是?

(1 分)
第 65 题 K3 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 20, primes[20], cnt = 0;
05    bool notp[21] = {0};
06    for (int i = 2; i <= n; i++) {
07        if (!notp[i]) primes[cnt++] = i;
08        for (int j = 0; j < cnt && i * primes[j] <= n; j++) {
09            notp[i * primes[j]] = true;
10            if (i % primes[j] == 0) break;   // 最小质因子只筛一次
11        }
12    }
13    cout << cnt;
14    return 0;
15}

单选题:程序输出是?

(1 分)
第 66 题 K4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    bool isp[21] = {0};
05    for (int i = 2; i <= 20; i++)
06        if (!isp[i])
07            for (int j = i * i; j <= 20; j += i) isp[j] = true;
08    for (int i = 10; i <= 20; i++)      // 只输出 [10, 20] 的质数
09        if (!isp[i]) cout << i << " ";
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 67 题 K5 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int d[11] = {0};
05    for (int i = 1; i <= 10; i++)       // i 是约数,给它的倍数加 1
06        for (int j = i; j <= 10; j += i) d[j]++;
07    cout << d[10];                      // 10 的约数个数
08    return 0;
09}

单选题:程序输出是?

(1 分)
第 68 题 K6 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    bool isp[11] = {0};
05    for (int i = 2; i <= 10; i++)
06        if (!isp[i])
07            for (int j = i * i; j <= 10; j += i) isp[j] = true;
08    for (int i = 2; i <= 10; i++)       // P = 质数,C = 合数
09        cout << (isp[i] ? 'C' : 'P');
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 69 题 K7 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 20, cnt = 0;
05    bool isp[21] = {0};
06    for (int i = 2; i <= n; i++)
07        if (!isp[i]) {
08            cnt++;
09            for (int j = ______; j <= n; j += i) isp[j] = true;   // 从 i*i 开始标记
10        }
11    cout << cnt;
12    return 0;
13}

单选题:横线处应填入?

(1 分)
拾贰

取整与模代码

6 QUESTIONS · 2 POINTS EACH
第 70 题 L1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 7, b = 2;
05    cout << a / b;              // 整数除法 = 向下取整
06    return 0;
07}

单选题:程序输出是?

(1 分)
第 71 题 L2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 10, m = 3;          // 10 件物品、每袋最多 3 件
05    cout << (n + m - 1) / m;    // 向上取整
06    return 0;
07}

单选题:程序输出是?

(1 分)
第 72 题 L3 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    cout << 17 % 5;
05    return 0;
06}

单选题:程序输出是?

(1 分)
第 73 题 L4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    cout << (-7) % 3;           // C++ 负数取模:符号与被除数一致
05    return 0;
06}

单选题:程序输出是?

(1 分)
第 74 题 L5 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 17, b = 25, m = 7;
05    cout << (a + b) % m << " ";         // 直接算
06    cout << (a % m + b % m) % m;        // 拆开算
07    return 0;
08}

单选题:程序输出是?

(1 分)
第 75 题 L6 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    long long a = 123456789, b = 987654321;
05    int m = 10;
06    cout << (a % m) * (b % m) % m;      // 先取模再乘,防溢出
07    return 0;
08}

单选题:程序输出是?

(1 分)
拾叁

排列组合代码

6 QUESTIONS · 2 POINTS EACH
第 76 题 M1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    long long f = 1;
05    for (int i = 1; i <= 5; i++) f *= i;
06    cout << f;
07    return 0;
08}

单选题:程序输出是?

(1 分)
第 77 题 M2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int ans = 1;
05    for (int i = 5; i >= 3; i--) ans *= i;   // A(5,3) = 5*4*3
06    cout << ans;
07    return 0;
08}

单选题:程序输出是?

(1 分)
第 78 题 M3 未作答

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    cout << c[5][2];            // C(5,2)
11    return 0;
12}

单选题:程序输出是?

(1 分)
第 79 题 M4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 6, k = 3;           // C(6,3) = 6*5*4 / (3*2*1)
05    long long a = 1, b = 1;
06    for (int i = 0; i < k; i++) a *= (n - i);
07    for (int i = 1; i <= k; i++) b *= i;
08    cout << a / b;
09    return 0;
10}

单选题:程序输出是?

(1 分)
第 80 题 M5 未作答

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] << " ";   // 第 5 行
11    return 0;
12}

单选题:程序输出是?

(1 分)
第 81 题 M6 未作答

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}

单选题:横线处应填入?

(1 分)
拾肆

计数应用代码

6 QUESTIONS · 2 POINTS EACH
第 82 题 N1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int m[3] = {2, 3, 4};       // 三类互斥方案的做法数
05    int sum = 0;
06    for (int i = 0; i < 3; i++) sum += m[i];   // 加法原理:相加
07    cout << sum;
08    return 0;
09}

单选题:程序输出是?

(1 分)
第 83 题 N2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int s[3] = {2, 3, 2};       // 三步各自的做法数
05    int prod = 1;
06    for (int i = 0; i < 3; i++) prod *= s[i];   // 乘法原理:相乘
07    cout << prod;
08    return 0;
09}

单选题:程序输出是?

(1 分)
第 84 题 N3 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int f4 = 1;
05    for (int i = 1; i <= 4; i++) f4 *= i;   // 捆绑后 4 个整体排列
06    cout << 2 * f4;             // 两人内部再排列(2!)
07    return 0;
08}

单选题:程序输出是?

(1 分)
第 85 题 N4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int f3 = 1;
05    for (int i = 1; i <= 3; i++) f3 *= i;   // 3 个男生排列
06    cout << f3 * (4 * 3);       // 4 个空位插 2 个女生:A(4,2)
07    return 0;
08}

单选题:程序输出是?

(1 分)
第 86 题 N5 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int c = 6 * 5 / 2;          // C(6,2):7 个相同物品、3 组、每组至少 1
05    cout << c;
06    return 0;
07}

单选题:程序输出是?

(1 分)
第 87 题 N6 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int c[8][8] = {0};
05    for (int i = 0; i <= 7; 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    cout << c[7][3];            // C(7,3)
11    return 0;
12}

单选题:程序输出是?

(1 分)
拾伍

完善程序

7 QUESTIONS · 2 POINTS EACH
第 88 题 O1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 17;
05    bool prime = true;
06    for (int i = 2; ______; i++)       // 试除范围到 sqrt(n)
07        if (n % i == 0) prime = false;
08    cout << (prime ? "YES" : "NO");
09    return 0;
10}

单选题:横线处应填入?

(1 分)
第 89 题 O2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 48, b = 36;
05    while (b) {
06        int t = ______;         // 取余数
07        a = b; b = t;
08    }
09    cout << a;
10    return 0;
11}

单选题:横线处应填入?

(1 分)
第 90 题 O3 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    bool isp[20] = {0};
05    for (int i = 2; i <= 19; i++)
06        if (!isp[i])
07            for (int j = ______; j <= 19; j += i) isp[j] = true;
08    int cnt = 0;
09    for (int i = 2; i <= 19; i++) if (!isp[i]) cnt++;
10    cout << cnt;
11    return 0;
12}

单选题:横线处应填入?

(1 分)
第 91 题 O4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 60;
05    for (int i = 2; i * i <= n; i++)
06        while (______) { cout << i << " "; n /= i; }   // 除尽当前质因子
07    if (n > 1) cout << n;
08    return 0;
09}

单选题:横线处应填入?

(1 分)
第 92 题 O5 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 10, m = 3;
05    cout << ______;             // 向上取整 (n + m - 1) / m
06    return 0;
07}

单选题:横线处应填入?

(1 分)
第 93 题 O6 未作答

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][1];
11    return 0;
12}

单选题:横线处应填入?

(1 分)
第 94 题 O7 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 4, b = 6;
05    int g = a, x = b;
06    while (x) { int t = g % x; g = x; x = t; }   // g = gcd
07    cout << ______;             // lcm = a * b / gcd
08    return 0;
09}

单选题:横线处应填入?

(1 分)
拾陆

代码易错

6 QUESTIONS · 2 POINTS EACH
第 95 题 P1 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int n = 97;
05    bool prime = true;
06    for (int i = 2; i <= n; i++)       // 错误:应 i * i <= n
07        if (n % i == 0) prime = false;
08    cout << (prime ? "YES" : "NO");
09    return 0;
10}

单选题:程序输出是?(97 是素数,正确应输出 YES

(1 分)
第 96 题 P2 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    bool isp[20] = {0};
05    for (int i = 2; i <= 19; i++)
06        if (!isp[i])
07            for (int j = i; j <= 19; j += i) isp[j] = true;   // 错误:把质数自己也算进去了
08    int cnt = 0;
09    for (int i = 2; i <= 19; i++) if (!isp[i]) cnt++;
10    cout << cnt;
11    return 0;
12}

单选题:程序输出是?

(1 分)
第 97 题 P3 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int a = 10, b = 4, m = 3;
05    cout << (a / b) % m << " ";         // 先除后模
06    cout << (a % m) / (b % m) % m;      // 错误示范:拆开除
07    return 0;
08}

单选题:程序输出是?(两值不同,说明模对除法不成立)

(1 分)
第 98 题 P4 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int main() {
04    int f = 1;
05    for (int i = 1; i <= 30; i++) f *= i;   // 30! 远超 int 范围
06    cout << f;
07    return 0;
08}

单选题:30! 约为多少?(这解释了为什么阶乘会溢出 int

(1 分)
第 99 题 P5 未作答

01#include <bits/stdc++.h>
02using namespace std;
03int C(int n, int k) {
04    if (k > n) return 0;                // 约定:k > n 时组合数为 0
05    if (k == 0 || k == n) return 1;
06    return C(n - 1, k) + C(n - 1, k - 1);
07}
08int main() {
09    cout << C(4, 1) << " " << C(4, 3) << " " << C(4, 4);
10    return 0;
11}

单选题:程序输出是?

(1 分)
第 100 题 P6 未作答

判断题:以下结论全部正确——"gcd(a,b)×lcm(a,b)=a×b\gcd(a,b) \times \mathrm{lcm}(a,b) = a \times bC(n,k)=C(n,nk)C(n,k) = C(n,n-k);埃氏筛从 i2i^2 开始标记;模运算对除法不直接成立"。

(1 分)