Cod sursa(job #2442561)

Utilizator marius004scarlat marius marius004 Data 24 iulie 2019 13:15:56
Problema Divizori Primi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

const int NMAX = 1000000;
int test,nrdiv[NMAX + 5],sol[NMAX + 5][8];

void sieve(){
    for(int i = 2;i <= NMAX;i++){
        if(!nrdiv[i])
            for(int j = i;j <= NMAX;j += i)
                nrdiv[j]++;
        sol[i][nrdiv[i]] = i;
    }
    for(int j = 0;j < 8;j++)
        for(int i = 2;i <= NMAX;i++)
            if(!sol[i][j])
                sol[i][j] = sol[i - 1][j];
}

int main(){
    freopen("divprim.in","r",stdin);
    freopen("divprim.out","w",stdout);
    
    scanf("%d",&test);
    sieve();
    
    while (test--) {
        int x,y;
        scanf("%d%d",&x,&y);
        printf("%d\n",sol[x][y]);
    }
    
    return 0;
}