以下是一个可以生成题目数据的C++代码:

#include <iostream>
#include <vector>
using namespace std;

vector<int> fib;

void generateFibonacci() {
    fib.push_back(1);
    fib.push_back(1);
    int i = 2;
    while (true) {
        int next = fib[i-1] + fib[i-2];
        if (next > 1000000) {
            break;
        }
        fib.push_back(next);
        i++;
    }
}

int main() {
    generateFibonacci();

    int n;
    cin >> n;

    vector<int> sequence;
    for (int i = 0; i < n; i++) {
        int op;
        cin >> op;
        if (op == 1 || op == 2) {
            int x;
            cin >> x;
            for (int j = 0; j < x; j++) {
                if (op == 1) {
                    sequence.push_back(fib[j]);
                } else {
                    sequence.insert(sequence.begin(), fib[j]);
                }
            }
        } else if (op == 3) {
            int x;
            cin >> x;
            for (int j = 0; j < x; j++) {
                sequence.pop_back();
            }
        } else if (op == 4) {
            int x, y;
            cin >> x >> y;
            int maxVal = sequence[x-1];
            for (int j = x; j < y; j++) {
                maxVal = max(maxVal, sequence[j]);
            }
            cout << maxVal << endl;
        } else if (op == 5) {
            int x, y;
            cin >> x >> y;
            int sum = 0;
            for (int j = x-1; j < y; j++) {
                sum += sequence[j];
            }
            cout << sum << endl;
        }
    }

    return 0;
}

这段代码首先生成了斐波那契数列 fib,存储在一个 vector<int> 中。然后使用一个循环读取输入的操作,并根据不同的操作进行相应的处理。操作1和2在数列前方或后方插入一定数量的斐波那契数。操作3在数列后方删除一定数量的数。操作4和5查询数列区间的最大值和和。最后输出查询结果。

请注意,这段代码并没有检查查询或删除的区间是否合法(即是否存在)。如果需要数据合法,你需要自行添加相关的判断逻辑


原文地址: http://www.cveoy.top/t/topic/iR2P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录