Cod sursa(job #1481647)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 5 septembrie 2015 00:05:19
Problema Divizori Primi Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 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;

    fin >> T;

    while(T--) {
        fin >> N >> K;

        // relizam 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 poisbile
        for (i = 1; i < p;i++) {
            for (int j = 0;j < 8; j++) {
                if (ciur[i] == j) {
                    d[i][j] = i;
                 }
                 else {
                    d[i][j] = d[i - 1][j];
                 }
            }
        }

        fout << d[N][K] << "\n";
    }
    return 0;
}