Cod sursa(job #2660375)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 19 octombrie 2020 08:53:55
Problema Divizori Primi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<bits/stdc++.h>

using namespace std;

ifstream fin("divprim.in");
ofstream fout("divprim.out");

const int NMAX = 1e6,
          KMAX = 7;
char ndp[NMAX + 1];
int sol[NMAX + 1][KMAX + 1];

void Eratostene() {
    for(int i = 2; i <= NMAX; ++i)
        if(ndp[i] == 0)
            for(int j = i; j <= NMAX; j += i)
                ++ndp[j];
}

int main() {
    fin.sync_with_stdio(false);
    fout.sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);
    Eratostene();
    int Q;
    fin >> Q;
    for(int i = 1; i <= NMAX; ++i) {
        for(int j = 0; j <= 7; ++j)
            sol[i][j] = sol[i - 1][j];
        sol[i][ndp[i]] = i;
    }
    while(Q--) {
        int N, K;
        fin >> N >> K;
        fout << sol[N][K] << '\n';
    }
}