Pagini recente » Cod sursa (job #2079561) | Cod sursa (job #2183376) | Cod sursa (job #1524154) | Cod sursa (job #195006) | Cod sursa (job #1792030)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <string>
#include <iterator>
#include <numeric>
#include <string>
#include <set>
#include <map>
#include <queue>
using namespace std;
ifstream in("divprim.in");
ofstream out("divprim.out");
int main()
{
vector<int> divisors(1000001);
for(int i = 2; i <= 1000000; ++i)
{
if(divisors[i] == 0)
for(int j = i + i; j <= 1000000; j += i)
divisors[j]++;
}
vector<vector<int>> numbers(8, vector<int>());
for(int i = 0; i <= 1000000; ++i)
{
numbers[divisors[i]].push_back(i);
}
int testNumber;
cin >> testNumber;
while(testNumber--)
{
int N, K;
cin >> N >> K;
auto found = lower_bound(numbers[K].begin(), numbers[K].end(), N);
if(found == numbers[K].begin())
if(*found != N)
cout << 0;
else
cout << N;
else if(found != numbers[K].end())
cout << *(found - 1);
else
cout << 0;
cout << '\n';
}
return 0;
}