Submission #41041627


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#include <atcoder/all>
using namespace atcoder;
using ll = long long;

vector<int> Eratosthenes(const int N) {
    vector<bool> is_prime(N + 1, true);
    vector<int> P;
    for (int i = 2; i <= N; i++) {
        if (is_prime[i]) {
            for (int j = 2 * i; j <= N; j += i) {
                is_prime[j] = false;
            }
            P.emplace_back(i);
        }
    }
    return P;
}

int main() {
    ll N;
    cin >> N;
    auto pa = Eratosthenes(400);
    auto pb = Eratosthenes(10000 + 10);
    auto pc = Eratosthenes(1e6 + 10);
    vector<ll> sq;
    for (int p : pc) {
        sq.push_back((ll)p * p);
    }
    int ans = 0;
    for (int i = 0; i < pa.size(); i++) {
        ll a = pa[i];
        int iterb = upper_bound(pb.begin(), pb.end(), a) - pb.begin();
        for (int j = iterb; j < pb.size(); j++) {
            ll b = pb[j];
            int startc = upper_bound(sq.begin(), sq.end(), b * b) - sq.begin();
            int endc =
                lower_bound(sq.begin(), sq.end(), N / (a * a * b)) - sq.begin();
            int tendc = -1;
            for (int ec = endc - 10; ec < endc + 10; ec++) {
                if (ec < 0 || ec >= pc.size()) continue;
                ll c = pc[ec];
                if (a * a * b * c * c <= N) tendc = ec;
            }
            ll sc = pc[startc], ec = pc[tendc];
            if (tendc == -1) continue;
            ans += max(tendc - startc + 1, 0);
        }
    }
    cout << ans << endl;
    return 0;
}

Submission Info

Submission Time
Task D - AABCC
User mtrh
Language C++ (GCC 9.2.1)
Score 400
Code Size 1575 Byte
Status AC
Exec Time 32 ms
Memory 4608 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:32:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   32 |     for (int i = 0; i < pa.size(); i++) {
      |                     ~~^~~~~~~~~~~
./Main.cpp:35:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   35 |         for (int j = iterb; j < pb.size(); j++) {
      |                             ~~^~~~~~~~~~~
./Main.cpp:42:34: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   42 |                 if (ec < 0 || ec >= pc.size()) continue;
      |                               ~~~^~~~~~~~~~~~
./Main.cpp:46:16: warning: unused variable ‘sc’ [-Wunused-variable]
   46 |             ll sc = pc[startc], ec = pc[tendc];
      |                ^~
./Main.cpp:46:33: warning: unused variable ‘ec’ [-Wunused-variable]
   46 |             ll sc = pc[startc], ec = pc[tendc];
      |                                 ^~

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 32 ms 4508 KiB
sample_02.txt AC 28 ms 4516 KiB
test_01.txt AC 22 ms 4540 KiB
test_02.txt AC 28 ms 4440 KiB
test_03.txt AC 20 ms 4516 KiB
test_04.txt AC 24 ms 4380 KiB
test_05.txt AC 22 ms 4512 KiB
test_06.txt AC 22 ms 4516 KiB
test_07.txt AC 20 ms 4524 KiB
test_08.txt AC 20 ms 4520 KiB
test_09.txt AC 25 ms 4516 KiB
test_10.txt AC 20 ms 4380 KiB
test_11.txt AC 26 ms 4408 KiB
test_12.txt AC 25 ms 4608 KiB
test_13.txt AC 25 ms 4556 KiB
test_14.txt AC 22 ms 4512 KiB
test_15.txt AC 21 ms 4388 KiB