已经被TLE打至跪地,所以说该怎么用前缀和解决这道题
查看原帖
已经被TLE打至跪地,所以说该怎么用前缀和解决这道题
1451420
ALZ233楼主2024/10/26 08:59
#include <iostream>
#include <vector>

const int P = 1145141;
using namespace std;
struct element {
    int l;
    int r;
};

template<typename T>
T sum(T firstNum, T* restNum, int numRestNum) {
    T result = firstNum;
    for (int i = 0; i < numRestNum; i++) {
        result ^= restNum[i];
    }
    return result;
}

int main() {
    using namespace std;
    long long n, q;
    cin >> n >> q;
    vector<int> arr(n);
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    vector<element> conditions(q);
    for (int j = 0; j < q; j++) {
        cin >> conditions[j].l >> conditions[j].r;
    }
    vector<int> result(q, 1);
    for (int k = 0; k < q; k++) {
        int l = conditions[k].l - 1;
        int r = conditions[k].r - 1;
        long long product = 1;
        for (int i = l; i <= r; i++) {
            product = (product * arr[i]) % P;
        }
        result[k] = product;
    }
    int finalResult = sum(result[0], result.data() + 1, result.size() - 1);
    cout << finalResult << endl;
    return 0;
}
2024/10/26 08:59
加载中...