Cod sursa(job #1328618)

Utilizator felixiPuscasu Felix felixi Data 28 ianuarie 2015 16:46:07
Problema Divizori Primi Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

ifstream cin("divprim.in");
ofstream cout("divprim.out");

const int NMAX = 1000;
const int KMAX = 7;

int c[NMAX+2];
vector <int> v[8];
vector <int> :: iterator it;

void ciur() {
    for( int i = 2;  i*i <= NMAX;  i++ ) {
        if( !c[i] ) {
            for( int j = i;  j <= NMAX;  j+=i ) c[j]++;
        }
    }
}

void parc() {
    for( int i = 2;  i <= NMAX;  ++i )  if( c[i] <= 7 )  v[ c[i] ].push_back(i);
}

int main() {
    ciur();
    parc();
    int T,N,K;
    cin >> T;
    for( int i = 1;  i <= T;  ++i ) {
        cin >> N >> K;
        it = upper_bound( v[K].begin(), v[K].end(), N );
        if( it != v[K].begin() ) --it;
        int x = *it;
        if( c[ x ] == K && x <= N ) cout << x;
        else cout << 0;
        cout << '\n';
    }
    return 0;
}