Cod sursa(job #2272268)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 29 octombrie 2018 22:03:46
Problema Divizori Primi Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;

int ciur[100100],a[10][100100],l[10],t,x,k,p,st,m,dr;
int main()
{
    ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    freopen("divprim.in","r",stdin);
    freopen("divprim.out","w",stdout);
    ciur[0]=ciur[1]=1;
    for(int i=2;i<=100000;i++)
        if(ciur[i]==0)
         for(int j=1;i*j<=100000;j++)
            ciur[i*j]++;
    for(int i=1;i<=100000;i++)
        a[ciur[i]][++l[ciur[i]]]=i;
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        cin>>x>>k;
        st=0;
        dr=l[k];
        while(dr-st>1)
        {
            m=st+(dr-st)/2;
            if(a[k][m]>=x) dr=m;
            else st=m;
        }
        cout<<a[k][st]<<'\n';
    }
    return 0;
}