Submission

Status:

(PPPP)(TSS)(SSS)

Subtask/Task Score:

{40/40}{0/30}{0/30}

Score: 40

User: nate213121

Problemset: Twin, Cousin, and Sexy Prime

Language: cpp

Time: 1.088 second

Submitted On: 2026-09-19 11:43:49

#include <bits/stdc++.h>

using namespace std;
vector<int> primes = {2, 3, 5, 7};
bool isPrime(int n)
{
    if(n <= 0)
    {
        return false;
    }
    if(n == 1)
    {
        return false;
    }
    if(n == 2)
    {
        return true;
    }
    bool out = true;
    for(auto& p:primes)
    {
        if(n % p == 0)
        {
            out = false;
            break;
        }
    }
    if(out == true && n > 7)
    {
        primes.push_back(n);
    }
    return out;
}

int main()
{
    int l, h;
    cin >> l >> h;
    vector<bool> primeCheck(70000001, false);
    for(auto& p:primes)
    {
        primeCheck[p] = true;
    }
    for(int n = 2; n <= h + 6; n++)
    {
        if(n <= 70000000 && n >= 0 && isPrime(n))
        {
            //primes.push_back(n);
            primeCheck[n] = true;
        }
    }
    /*for(auto& p:primes)
    {
        cout << p << " ";
    }
    cout << endl;*/
    int two = 0, four = 0, six = 0;
    for(int diff = 2; diff <= 6; diff += 2)
    {
        //cout << "Diff = " << diff << ": ";
        for(auto& p:primes)
        {
            if(p >= l && p <= h && ((p - diff >= 0 && primeCheck[p - diff]) || (p + diff <= 70000000 && primeCheck[p + diff])))
            {
                //cout << p << ", ";
                if(diff == 2)
                {
                    two += 1;
                }
                else if(diff == 4)
                {
                    four += 1;
                }
                else
                {
                    six += 1;
                }
            }
        }
        //cout << endl;
    }
    //cout << endl;
    
    cout << two << endl << four << endl << six;

    return 0;
}