Cod sursa(job #1481650)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 5 septembrie 2015 00:17:36
Problema Divizori Primi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int ciur[1000001], d[1000001][8];
//d[i][j] = cel mai mare numar natural mai mic sau egal decat i si care are exact j divizori primi.
//d[1][0] = 1;
//d[i][j] = i daca ciur[i] == j
//d[i][j] = d[i - 1][j], altfel

int main() {
    int T, N, K, i, j, a;

    // realizam ciurul
    int p = 1000000;

    for (i = 2; i <= p; i++) {
        if (ciur[i] == 0) {
            for (j = i; j <= p; j = j + i) {
                ciur[j]++;
            }
        }
    }

    // salvarea tuturor raspunsurilor posibile
    for (i = 1; i < p; i++) {
        for (j = 0; j < 8; j++) {
            if (ciur[i] == j) {
                d[i][j] = i;
             }
             else {
                d[i][j] = d[i - 1][j];
             }
        }
    }

    fin >> T;

    while(T--) {
        fin >> N >> K;
        fout << d[N][K] << "\n";
    }
    return 0;
}