Submission
Status:
(PPxS)(SSS)(SSS)
Subtask/Task Score:
{0/40}{0/30}{0/30}
Score: 0
User: TonnamSora
Problemset: Twin, Cousin, and Sexy Prime
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-13 13:53:37
#include <iostream>
#include <vector>
using namespace std;
int main(){
long long int l, u;
cin >> l >> u;
bool a[u + 7] = {0};
for(int i = 2; i <= u + 6; i++){
if(a[i] == 0){
for(long long int j = i * i; j <= u + 6; j = j + i){
a[j] = 1;
}
}
}
a[0] = 1;
a[1] = 1;
int cnt = 0;
for(int i = 0; i <= u + 6; i++){
if(a[i] == 0){
cnt++;
//cout << i << " ";
}
}
//cout << cnt;
int p[cnt];
int idx = 0;
for(int i = 2; i <= u + 6; i++){
if(a[i] == 0){
p[idx] = i;
//cout << p[idx] << " ";
idx++;
}
}
int idxl = 0;
int idxu = 0;
for(int i = 0; i < cnt; i++){
if(p[i] < l){
idxl++;
}
if(p[i] >= u){
break;
}
idxu++;
//cout << p[i] << " " << idxl << " " << idxu;
//cout << "\n";
}
//cout << idxl << " " << idxu;
int tp[u + 1] = {0}, cp[u + 1] = {0}, sp[u + 1] = {0};
int start = idxl;
int stop = idxu;
if(idxu + 1 + 1 <= cnt){
stop = idxu + 1;
}
else if(idxu + 1 + 2 <= cnt){
stop = idxu + 2;
}
if(idxl >= 2){
start = start - 2;
}
else if(idxl >= 1){
start = start - 1;
}
for(int i = start; i <= stop; i++){
if(i + 1 <= cnt && p[i] + 2 == p[i + 1]){
tp[i]++;
tp[i + 1]++;
}
if(i + 2 <= cnt && p[i] + 2 == p[i + 2]){
tp[i]++;
tp[i + 2]++;
}
if(i + 1 <= cnt && p[i] + 4 == p[i + 1]){
cp[i]++;
cp[i + 1]++;
}
if(i + 2 <= cnt && p[i] + 4 == p[i + 2]){
cp[i]++;
cp[i + 2]++;
}
if(i + 1 <= cnt && p[i] + 6 == p[i + 1]){
sp[i]++;
sp[i + 1]++;
}
if(i + 2 <= cnt && p[i] + 6 == p[i + 2]){
sp[i]++;
sp[i + 2]++;
}
}
int tpcnt = 0;
int cpcnt = 0;
int spcnt = 0;
for(int i = 0; i <= u; i++){
if(tp[i] >= 1 && p[i] >= l && p[i] <= u){
tpcnt++;
//cout << i << " ";
}
if(cp[i] >= 1 && p[i] >= l && p[i] <= u){
cpcnt++;
}
if(sp[i] >= 1 && p[i] >= l && p[i] <= u){
spcnt++;
}
}
cout << tpcnt << "\n" << cpcnt << "\n" << spcnt;
}