GESP 五级 · GESP 202503 C++ 五级 第 15 题

选择题 · 答案 B

← 整套速查表 GESP 五级 全部真题

题目

小杨编写了一个如下的高精度乘法函数,则横线上应填写的代码为( )。

vector<int> multiply(vector<int>& a, vector<int>& b) {
    int m = a.size(), n = b.size();
    vector<int> c(m + n, 0);

    // 逐位相乘,逆序存储
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            c[i + j] += a[i] * b[j];
        }
    }

    // 处理进位
    int carry = 0;
    for (int k = 0; k < c.size(); ++k) {
        _________________________  // 在此处填入代码
        c[k] = temp % 10;
        carry = temp / 10;
    }

    while (c.size() > 1 && c.back() == 0)
        c.pop_back();
    return c;
}
答案:B

解题思维

STL 容器:vector(动态数组)、set/map(红黑树,有序)、unordered_set/map(哈希表,无序)。注意迭代器失效问题。

常见错误

填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。

详细解析(节选)

【考点】高精度乘法|进位处理|数组运算

1. 🎯 考纲定位

GESP 五级《算法模块》中"高精度运算"的典型考法。命题人卡住的是考生对进位传递方向的理解——绝大多数人只背了"逐位相乘逆序存储",却忽略了进位必须从低位向高位累加。这道题就是专门筛掉那些"只知公式、不懂流程"的伪高精度选手。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断