Pagini recente » Cod sursa (job #2683283) | Cod sursa (job #2281842) | Cod sursa (job #1777969) | Cod sursa (job #1170552) | Cod sursa (job #3338195)
#include <algorithm>
#include <iostream>
#include <fstream>
#include <climits>
#include <vector>
#include <stack>
#include <cmath>
// #include <bits/stdc++.h>
#define in fin
#define out fout
using namespace std;
const int NMAX = 1000001;
ifstream fin("divprim.in");
ofstream fout("divprim.out");
bool c[NMAX];
int divs[NMAX];
vector<int> nr[8]; // numerele care au k divizori
void ciur(){
c[0] = c[1] = 1;
for(int i = 2; i < NMAX; i++){
if(!c[i]){
divs[i]++;
for(int j = 2 * i; j < NMAX; j += i){
divs[j]++;
c[j] = 1;
}
}
}
for(int i = 1; i < NMAX; i++){
if(divs[i] <= 7) nr[ divs[i] ].push_back(i);
}
}
signed main(){
ios_base::sync_with_stdio(false);
in.tie(NULL);
ciur();
int t; in >> t;
for(int ii = 0; ii < t; ii++){
int n, k; in >> n >> k;
int poz = upper_bound(nr[k].begin(), nr[k].end(), n) - nr[k].begin() - 1;
if(poz < 0) out << "0\n";
else out << nr[k][poz] << "\n";
}
return 0;
}