Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Diferente pentru runda/redsnow_3 intre reviziile 14 si 54 | Diferente pentru runda/redsnow_3 intre reviziile 11 si 54 | Cod sursa (job #1708047)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000000
int ciur[1+MAXN];
int d[1+MAXN][8];
int D(int n, int k){
if(n==-1)
return 0;
if(d[n][k]==0){
if(ciur[n]==k)
d[n][k]=n;
else
d[n][k]=D(n-1, k);
}
return d[n][k];
}
int main(){
int i, j, n, k;
FILE*fi,*fo;
fi=fopen("divprim.in","r");
fo=fopen("divprim.out","w");
ciur[0]=ciur[1]=0;
for(i=2;i*i<=MAXN;i++)
if(ciur[i]==0){
for(j=2*i;j<=MAXN;j+=i)
ciur[j]++;
}
for(i=2;i<=MAXN;i++)
if(ciur[i]==0)
ciur[i]=1;
int t;
fscanf(fi,"%d", &t);
for(int i=0;i<t;i++){
fscanf(fi,"%d%d", &n, &k);
if(k!=0)
fprintf(fo,"%d\n", D(n, k));
else if(k==0){
fprintf(fo,"1\n");
}
}
fclose(fi);
fclose(fo);
return 0;
}