Submission #45557094


Source Code Expand

#include <bits/stdc++.h>

namespace {
    using Num = long long int;
}

void find_primes(std::vector<Num>& primes, std::vector<bool>& not_primes, Num upper) {
    for(Num p{2}; (p*p)<=upper; ++p) {
        if (not_primes.at(p)) {
            continue;
        }
        for(Num i=p*2; i<=upper; i+=p) {
            not_primes.at(i) = true;
        }
    }

    for(Num p{2}; p<=upper; ++p) {
        if (!not_primes.at(p)) {
            primes.push_back(p);
        }
    }
}

void solve(std::istream& is, std::ostream& os) {
    using Num = long long int;
    Num n {0};
    is >> n;

    constexpr Num upper = 1000100LL;
    std::vector<Num> primes;
    std::vector<bool> not_primes(upper + 1, false);
    find_primes(primes, not_primes, upper);

    Num answer {0};
    Num a_index {0};
    for(;;) {
        const Num a = primes.at(a_index);
        if ((a * a * a * a * a) > n) {
            break;
        }

        Num b_index = a_index + 1;
        for(;;) {
            const Num b = primes.at(b_index);
            if ((a * a * b * b * b) > n) {
                break;
            }

            const Num c_index = b_index + 1;
            const Num lower = primes.at(c_index);
            if ((a * a * b * lower * lower) > n) {
                break;
            }

            Num c_upper = 288675;
            while((a * a * b * c_upper * c_upper) > n) {
                --c_upper;
            }

            auto it = std::upper_bound(primes.begin(), primes.end(), c_upper);
            const auto d = std::max(0LL, (it - primes.begin()) - c_index);
            answer += d;

            if (d == 0) {
                break;
            }
            ++b_index;
        }
        ++a_index;
    }

    os << answer << "\n";
    return;
}

int main(void) {
    solve(std::cin, std::cout);
    return 0;
}

Submission Info

Submission Time
Task D - AABCC
User zettsut
Language C++ 20 (gcc 12.2)
Score 400
Code Size 1899 Byte
Status AC
Exec Time 788 ms
Memory 4472 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 17
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt
Case Name Status Exec Time Memory
sample_01.txt AC 6 ms 4224 KiB
sample_02.txt AC 787 ms 4224 KiB
test_01.txt AC 5 ms 4268 KiB
test_02.txt AC 11 ms 4332 KiB
test_03.txt AC 77 ms 4288 KiB
test_04.txt AC 788 ms 4280 KiB
test_05.txt AC 787 ms 4320 KiB
test_06.txt AC 184 ms 4340 KiB
test_07.txt AC 683 ms 4380 KiB
test_08.txt AC 36 ms 4328 KiB
test_09.txt AC 777 ms 4284 KiB
test_10.txt AC 718 ms 4340 KiB
test_11.txt AC 210 ms 4240 KiB
test_12.txt AC 502 ms 4256 KiB
test_13.txt AC 444 ms 4264 KiB
test_14.txt AC 578 ms 4472 KiB
test_15.txt AC 687 ms 4312 KiB