Cod sursa(job #2532841)

Utilizator Florinos123Gaina Florin Florinos123 Data 28 ianuarie 2020 14:36:35
Problema Divizori Primi Scor 65
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <string.h>

using namespace std;

ifstream f ("divprim.in");
ofstream g ("divprim.out");

int t, n, k, i, v[1000002], best[1000002];

void generare ()
{
 int i, j;
    v[1] = 1;
    for (i=2; i<=1000000; i++)
    {
        if (v[i] == 0)
        {
            for (j=2*i; j<=1000000; j=j+i)
            {
                v[j] ++;
            }
        }
    }
    for (i=2; i<=1000000; i++)
        best[i] = max(best[i-1], v[i]);
}

int getnumar (int nr, int div)
{
    if (nr == 1)
        return 0;
    if (best[nr] < div)
        return 0;
    int i;
     for (i=nr; i>=1; i--)
     {
         if (v[i] == div)
             return i;
     }
   return 0;
}

int main()
{
  generare();
   f >> t;
    for (i=1; i<=t; i++)
    {
        f >> n >> k;
        g << getnumar(n, k) << '\n';
    }
    return 0;
}