Submission #67157335
Source Code Expand
Copy
/*import mathdef solve():try:L, R = map(int, input().split())except (IOError, ValueError):returnif L == R:print(1)returnstart = L + 1end = Rfound_prime_powers = set()limit = math.isqrt(end)primes_upto_limit = []sieve_primes = [True] * (limit + 1)if limit >= 0:sieve_primes[0] = Falseif limit >= 1:sieve_primes[1] = False
/*
import math
def solve():
try:
L, R = map(int, input().split())
except (IOError, ValueError):
return
if L == R:
print(1)
return
start = L + 1
end = R
found_prime_powers = set()
limit = math.isqrt(end)
primes_upto_limit = []
sieve_primes = [True] * (limit + 1)
if limit >= 0:
sieve_primes[0] = False
if limit >= 1:
sieve_primes[1] = False
for p in range(2, limit + 1):
if sieve_primes[p]:
primes_upto_limit.append(p)
for i in range(p * p, limit + 1, p):
sieve_primes[i] = False
for p in primes_upto_limit:
power = p * p
while power <= end:
if power >= start:
found_prime_powers.add(power)
if power > end // p:
break
power *= p
is_prime_in_range = [True] * (end - start + 1)
if start == 1 and len(is_prime_in_range) > 0:
is_prime_in_range[0] = False
for p in primes_upto_limit:
start_val = max(p * p, (start + p - 1) // p * p)
for j in range(start_val, end + 1, p):
if j >= start:
is_prime_in_range[j - start] = False
for i, is_prime in enumerate(is_prime_in_range):
if is_prime:
found_prime_powers.add(start + i)
print(1 + len(found_prime_powers))
if __name__ == "__main__":
solve()
*/
#include <iostream>
#include <vector>
#include <cmath>
#include <set>
using namespace std;
void solve() {
long long L, R;
if (!(cin >> L >> R)) {
return;
}
if (L == R) {
cout << 1 << endl;
return;
}
long long start = L + 1;
long long end = R;
set<long long> found_prime_powers;
long long limit = (long long)(sqrt(end));
vector<long long> primes_upto_limit;
vector<bool> sieve_primes(limit + 1, true);
if (limit >= 0) sieve_primes[0] = false;
if (limit >= 1) sieve_primes[1] = false;
for (long long p = 2; p <= limit; ++p) {
if (sieve_primes[p]) {
primes_upto_limit.push_back(p);
for (long long i = p * p; i <= limit; i += p) {
sieve_primes[i] = false;
}
}
}
for (long long p : primes_upto_limit) {
long long power = p * p;
while (power <= end) {
if (power >= start) {
found_prime_powers.insert(power);
}
if (power > end / p) break;
power *= p;
}
}
vector<bool> is_prime_in_range(end - start + 1, true);
if (start == 1 && is_prime_in_range.size() > 0) {
is_prime_in_range[0] = false;
}
for (long long p : primes_upto_limit) {
long long start_val = max(p * p, ((start + p - 1) / p) * p);
for (long long j = start_val; j <= end; j += p) {
if (j >= start) {
is_prime_in_range[j - start] = false;
}
}
}
for (long long i = 0; i < is_prime_in_range.size(); ++i) {
if (is_prime_in_range[i]) {
found_prime_powers.insert(start + i);
}
}
cout << 1 + found_prime_powers.size() << endl;
}
int main() {
solve();
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - LCM Sequence |
| User | SqRooti |
| Language | C++ 17 (gcc 12.2) |
| Score | 500 |
| Code Size | 3356 Byte |
| Status | AC |
| Exec Time | 180 ms |
| Memory | 35692 KiB |
Compile Error
Main.cpp: In function ‘void solve()’:
Main.cpp:115:29: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<bool>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
115 | for (long long i = 0; i < is_prime_in_range.size(); ++i) {
| ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_1_00.txt, 01_random_1_01.txt, 01_random_1_02.txt, 01_random_1_03.txt, 01_random_1_04.txt, 01_random_1_05.txt, 01_random_1_06.txt, 01_random_1_07.txt, 01_random_1_08.txt, 01_random_1_09.txt, 02_random_2_00.txt, 02_random_2_01.txt, 02_random_2_02.txt, 02_random_2_03.txt, 02_random_2_04.txt, 02_random_2_05.txt, 02_random_2_06.txt, 02_random_2_07.txt, 02_random_2_08.txt, 02_random_2_09.txt, 02_random_2_10.txt, 02_random_2_11.txt, 02_random_2_12.txt, 02_random_2_13.txt, 02_random_2_14.txt, 03_corner_00.txt, 03_corner_01.txt, 03_corner_02.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3504 KiB |
| 00_sample_01.txt | AC | 1 ms | 3428 KiB |
| 00_sample_02.txt | AC | 180 ms | 25300 KiB |
| 01_random_1_00.txt | AC | 161 ms | 23248 KiB |
| 01_random_1_01.txt | AC | 149 ms | 22420 KiB |
| 01_random_1_02.txt | AC | 70 ms | 13000 KiB |
| 01_random_1_03.txt | AC | 73 ms | 13232 KiB |
| 01_random_1_04.txt | AC | 176 ms | 25072 KiB |
| 01_random_1_05.txt | AC | 78 ms | 12640 KiB |
| 01_random_1_06.txt | AC | 111 ms | 17220 KiB |
| 01_random_1_07.txt | AC | 41 ms | 8400 KiB |
| 01_random_1_08.txt | AC | 116 ms | 17608 KiB |
| 01_random_1_09.txt | AC | 68 ms | 12524 KiB |
| 02_random_2_00.txt | AC | 141 ms | 22044 KiB |
| 02_random_2_01.txt | AC | 138 ms | 21756 KiB |
| 02_random_2_02.txt | AC | 140 ms | 21812 KiB |
| 02_random_2_03.txt | AC | 150 ms | 22260 KiB |
| 02_random_2_04.txt | AC | 149 ms | 22344 KiB |
| 02_random_2_05.txt | AC | 148 ms | 22292 KiB |
| 02_random_2_06.txt | AC | 134 ms | 22228 KiB |
| 02_random_2_07.txt | AC | 133 ms | 22176 KiB |
| 02_random_2_08.txt | AC | 135 ms | 22188 KiB |
| 02_random_2_09.txt | AC | 168 ms | 24252 KiB |
| 02_random_2_10.txt | AC | 166 ms | 24404 KiB |
| 02_random_2_11.txt | AC | 166 ms | 24304 KiB |
| 02_random_2_12.txt | AC | 154 ms | 23392 KiB |
| 02_random_2_13.txt | AC | 154 ms | 23308 KiB |
| 02_random_2_14.txt | AC | 155 ms | 23264 KiB |
| 03_corner_00.txt | AC | 1 ms | 3404 KiB |
| 03_corner_01.txt | AC | 155 ms | 35692 KiB |
| 03_corner_02.txt | AC | 10 ms | 6008 KiB |