/ SeriousOJ /

Record Detail

Runtime Error


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Memory Exceeded ≥2761ms ≥256.016 MiB
#3 Runtime Error terminate called after throwing an instance of 'std::length_error' what(): cannot create std::vector larger than max_size() 10ms 788.0 KiB

Code

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> precompute_spf(int max_num) {
    vector<int> spf(max_num + 1, 0);
    spf[0] = spf[1] = 1;
    for (int i = 2; i <= max_num; ++i) {
        if (spf[i] == 0) {
            spf[i] = i;
            for (int j = i * i; j <= max_num; j += i) {
                if (spf[j] == 0) {
                    spf[j] = i;
                }
            }
        }
    }
    return spf;
}

int num_divisors(int x, const vector<int>& spf) {
    if (x == 1) return 1;
    int res = 1;
    while (x > 1) {
        int p = spf[x];
        int count = 0;
        while (x % p == 0) {
            x /= p;
            count++;
        }
        res *= (count + 1);
    }
    return res;
}

vector<int> precompute_max_divisors(int max_N) {
    int max_S = max_N * (max_N + 1) / 2;
    vector<int> spf = precompute_spf(max_S);
    vector<int> max_divisors(max_N + 1, 0);
    int current_max = 0;
    for (int L = 1; L <= max_N; ++L) {
        int S = L * (L + 1) / 2;
        int divisors = num_divisors(S, spf);
        if (divisors > current_max) {
            current_max = divisors;
        }
        max_divisors[L] = current_max;
    }
    return max_divisors;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    vector<int> queries(T);
    int max_N = 0;
    for (int i = 0; i < T; ++i) {
        cin >> queries[i];
        if (queries[i] > max_N) {
            max_N = queries[i];
        }
    }

    vector<int> max_divisors = precompute_max_divisors(max_N);

    for (int N : queries) {
        cout << max_divisors[N] << '\n';
    }

    return 0;
}

Information

Submit By
Type
Submission
Problem
P1180 Maximum Divisor
Language
C++17 (G++ 13.2.0)
Submit At
2025-04-06 20:08:46
Judged At
2025-04-06 20:08:46
Judged By
Score
0
Total Time
2761ms
Peak Memory
256.016 MiB