Cod sursa(job #641726)
| Utilizator | Data | 29 noiembrie 2011 11:59:21 | |
|---|---|---|---|
| Problema | Divizori Primi | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.52 kb |
#include <cstdio>
#define MAXN 1000010
#define MAXK 8
int main(){
freopen("divprim.in", "r", stdin);
freopen("divprim.out", "w", stdout);
int T, N, K, i, j, maxn;
static int Fact[MAXN], A[MAXN][MAXK];
for(i=2; i<MAXN; i++)
if(!Fact[i])
for(j=i; j<MAXN; j+=i)
Fact[j]++;
for(i=0; i<MAXK; i++){
maxn=0;
for(j=1; j<MAXN; j++){
if(Fact[j]==i)
maxn=j;
A[j][i]=maxn;
}
}
scanf("%d", &T);
while(T--){
scanf("%d%d", &N, &K);
printf("%d\n", A[N][K]);
}
return 0;
}
