找到 375 道单选题
EXY-SC-0300
第 76 题

下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用 int 表示,则横线处应该填写( )。

int main(){
    string s;
    int b;
    cin >> s >> b;

    vector<int> a;
    for(char c : s){
        a.push_back(c - '0');
    }

    vector<int> c;
    long long rem = 0;

    for(int i = 0; i < a.size(); i++){
        rem = rem * 10 + a[i];
        int q = rem / b;
        c.push_back(q);
        ______________
    }

    int pos = 0;
    while(pos < c.size() - 1 && c[pos] == 0) pos++;

    for(int i = pos; i < c.size(); i++){
        cout << c[i];
    }

    cout << endl;
    cout << rem << endl;
    return 0;
}
A

rem /= b;

B

rem %= b;

C

rem = b;

D

rem = q;

语言: C++
GESP真题 五级
2026.3
单选题号: 15
EXY-SC-0299
第 77 题

下面关于排序算法的描述中,不正确的是( )。

A

冒泡排序和插入排序都是稳定的排序算法

B

快速排序和归并排序都是不稳定的排序算法

C

冒泡排序和插入排序最好时间复杂度均为 $O(n)$

D

归并排序在最好、最坏和平均三种情况下的时间复杂度均为 $O(n\ log\,n)$

语言: C++
GESP真题 五级
2026.3
单选题号: 14
EXY-SC-0298
第 78 题

有 n 位同学的成绩已经从小到大排好序,现在对它执行下面这段以第一个元素为 pivot 的快速排序,请问此次排序的时间复杂度是( )。

void quicksort(vector<int>& a, int l, int r) {
    if (l >= r) return;
    int pivot = a[l];
    int i = l, j = r;
    while (i < j) {
        while (i < j && a[j] >= pivot) j--;
        while (i < j && a[i] <= pivot) i++;
        if (i < j) swap(a[i], a[j]);
    }
    swap(a[l], a[i]);
    quicksort(a, l, i - 1);
    quicksort(a, i + 1, r);
}
A

$O(n)$

B

$O(n\ log\,n)$

C

$O(n^2)$

D

$O(log\,n)$

语言: C++
GESP真题 五级
2026.3
单选题号: 13
EXY-SC-0297
第 79 题

游戏大赛决赛,两组选手分别按得分从小到大排好队,现在要把他们合并成一个有序排行榜。
A组:A={12,35,67,89},B组:B={20,45,55,78},下面是归并合并函数的核心循环,横线处应填入( )。

int i = 0, j = 0;
vector<int> result;

while (i < A.size() && j < B.size()) {
    if ( ________ ) {
        result.push_back(A[i++]);
    } else {
        result.push_back(B[j++]);
    }
}

while (i < A.size()) { 
      result.push_back(A[i++]); 
}
while (j < B.size()) { 
      result.push_back(B[j++]); 
}
A

A[i] >= B[j]

B

A[i] <= B[j]

C

i >= j

D

i <= j

语言: C++
GESP真题 五级
2026.3
单选题号: 12
EXY-SC-0296
第 80 题

下面代码用分治求“最大连续子段和”,其时间复杂度为( )。

int solve(vector<int>& a, int l, int r){
    if(l == r) return a[l];

    int mid = l + (r - l) / 2;

    int left = solve(a, l, mid);
    int right = solve(a, mid + 1, r);

    int sum = 0, lmax = INT_MIN;
    for(int i = mid; i >= l; i--) {
        sum += a[i];
        lmax = max(lmax, sum);
    }

    sum = 0;
    int rmax = INT_MIN;
    for(int i = mid + 1; i <= r; i++){
        sum += a[i];
        rmax = max(rmax, sum);
    }

    return max({left, right, lmax + rmax});
}
A

$O(n^2)$

B

$O(n\ log\,n)$

C

$O(log\,n)$

D

$O(n)$

语言: C++
GESP真题 五级
2026.3
单选题号: 11
当前页显示 76 - 80 ,共 375 道单选题