Pagini recente » Cod sursa (job #2283492) | Cod sursa (job #1360979) | Cod sursa (job #2012430) | Cod sursa (job #351440) | Cod sursa (job #1792057)
#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 divisors[1000001];
int numbers[1000001][8];
int main()
{
vector<int> divisors(1000001);
for(int i = 2; i <= 1000000; ++i)
{
if(divisors[i] == 0)
for(int j = 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;
in >> testNumber;
while(testNumber--)
{
int N, K;
in >> N >> K;
auto found = lower_bound(numbers[K].begin(), numbers[K].end(), N);
if(found == numbers[K].begin())
if(*found != N)
out << 0;
else
out << N;
else if(found != numbers[K].end())
out << *(found - 1);
else
out << 0;
out << '\n';
}
return 0;
}