Cod sursa(job #3136754)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 8 iunie 2023 12:24:36
Problema Divizori Primi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("divprim.in");
ofstream fout ("divprim.out");
int i,o,t,k,mij,j,n,st,dr,ciur[1000001];
vector <int> l[8];
int main()
{
    for (i=2; i<=1000000; i++)
    {
        if (ciur[i]==0)
        {
            ciur[i]=1;
            for (j=i+i; j<=1000000; j+=i)
                ciur[j]++;
        }
    }
    l[0].push_back (1);
    for (i=2; i<=1000000; i++)
    {
        if (ciur[i]<=7)
            l[ciur[i]].push_back (i);
    }
    fin>>t;
    for (o=1; o<=t; o++)
    {
        fin>>n>>k;
        st=0;
        dr=l[k].size ()-1;
        while (st<=dr)
        {
            mij=(st+dr)/2;
            if (l[k][mij]<=n)
                st=mij+1;
            else
                dr=mij-1;
        }
        if (l[k][dr]<=n)
            fout<<l[k][dr]<<"\n";
        else
            fout<<"0\n";
    }
    return 0;
}