#1207. [CSP2023 入门级] 第 33 题

[CSP2023 入门级] 第 33 题

三、完善程序(单选题,每小题 33 分,共计 3030 分)

(寻找被移除的元素)问题: 原有长度为 n+1n+1 公差为 11 等差数列,将数列输到程序的数组时移除了一个元素,导致长度为 nn 的连续数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。试补全程序。

#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums) {
    int left = 0, right = nums.size() - 1;
    while (left < right){
        int mid = left + (right - left) / 2;
        if (nums[mid] == mid + ①) {
            ②;
        } else {
            ③;
        }
    }
    return ④;
}
int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; i++) cin >> nums[i];
    int missing_number = find_missing(nums);
    if (missing_number == ⑤) {
        cout << "Sequence is consecutive" << endl;
    }else{
        cout << "Missing number is " << missing_number << endl;
    }
    return 0;
}

{{ select(1) }}

  • 1
  • nums[0]
  • right
  • left