Cod sursa(job #83169)

Utilizator blasterzMircea Dima blasterz Data 10 septembrie 2007 11:27:54
Problema Divizori Primi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
#include <string>
#define maxn 1000001

int a[maxn];
int x[maxn][8];

void presolve()
{
	int i, j;
	a[1]=0;
	a[2]=1;
	for(i=4;i<maxn;i+=2) a[i]=1;
	
	for(i=3;i<maxn;i+=2)
		if(!a[i])
			for(j=i;j<maxn;j+=i) ++a[j];

	char ax[8];
	memset(ax, 0, sizeof(0));
	ax[0]=1;
	memcpy(x[1], ax, sizeof(ax));
	for(i=2;i<maxn;++i)
	{
		if(a[i]<=7)ax[a[i]]=i;
		memcpy(x[i], ax, sizeof(ax));
		
	}
	
}


int main()
{
	presolve();
	int n,p,q;
	freopen("divprim.in","r",stdin);
	freopen("divprim.out","w",stdout);
	scanf("%d\n", &n);
	//for(scanf("%d\n", &n); n ; --n)
	while(n--)
	{
		scanf("%d %d\n", &p, &q);
		printf("%d\n", x[p][q]);
	}
	
	return 0;
}