Cod sursa(job #337708)

Utilizator iulia609fara nume iulia609 Data 4 august 2009 17:22:42
Problema Divizori Primi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.04 kb
#include<stdio.h>
#define dim 1000001
using namespace std;

int v[dim], mat[8][dim];

int main()
{  int K;
   int T,N,i,j;

	FILE *f = fopen("divprim.in", "r");
	FILE *g = fopen("divprim.out", "w");
	
	fscanf(f, "%d", &T);
	
	for(i = 3; i*i <= dim; i+=2)
		if(v[i] == 0)
			for(j = i+i; j <= dim; j+=i)
				v[j]++;
					
	
	for(i = 3; i <= dim; i++)
		{
			if(i % 2 == 0) v[i]++;
			if(v[i] == 1) mat[1][i] = i, mat[2][i] = mat[2][i-1], mat[3][i] = mat[3][i-1], mat[4][i] = mat[4][i-1], mat[5][i] = mat[5][i-1], mat[6][i] = mat[6][i-1], mat[7][i] = mat[7][i-1];
				else if(v[i] == 2) mat[2][i] = i, mat[1][i] = mat[1][i-1], mat[3][i] = mat[3][i-1], mat[4][i] = mat[4][i-1], mat[5][i] = mat[5][i-1], mat[6][i] = mat[6][i-1], mat[7][i] = mat[7][i-1];	
				else if(v[i] == 3) mat[3][i] = i, mat[1][i] = mat[1][i-1], mat[2][i] = mat[2][i-1], mat[4][i] = mat[4][i-1], mat[5][i] = mat[5][i-1], mat[6][i] = mat[6][i-1], mat[7][i] = mat[7][i-1];	
				else if(v[i] == 4) mat[4][i] = i, mat[1][i] = mat[1][i-1], mat[2][i] = mat[2][i-1], mat[3][i] = mat[3][i-1], mat[5][i] = mat[5][i-1], mat[6][i] = mat[6][i-1], mat[7][i] = mat[7][i-1];	
				else if(v[i] == 5) mat[5][i] = i, mat[1][i] = mat[1][i-1], mat[2][i] = mat[2][i-1], mat[3][i] = mat[3][i-1], mat[4][i] = mat[4][i-1], mat[6][i] = mat[6][i-1], mat[7][i] = mat[7][i-1];	
				else if(v[i] == 6) mat[6][i] = i, mat[1][i] = mat[1][i-1], mat[2][i] = mat[2][i-1], mat[3][i] = mat[3][i-1], mat[4][i] = mat[4][i-1], mat[5][i] = mat[5][i-1], mat[7][i] = mat[7][i-1];	
				else if(v[i] == 7) mat[7][i] = i, mat[1][i] = mat[1][i-1], mat[2][i] = mat[2][i-1], mat[3][i] = mat[3][i-1], mat[4][i] = mat[4][i-1], mat[5][i] = mat[5][i-1], mat[6][i] = mat[6][i-1];	
				else mat[1][i] = mat[1][i-1], mat[2][i] = mat[2][i-1], mat[3][i] = mat[3][i-1], mat[4][i] = mat[4][i-1], mat[5][i] = mat[5][i-1], mat[6][i] = mat[6][i-1], mat[7][i] = mat[7][i-1];
		}
		
		
		
		for(i = 1; i <= T; i++)
		{
			N = K = 0;
			fscanf(f, "%d%d", &N, &K);
			fprintf(g, "%d\n", mat[K][N]);
		}
	
	fclose(f);
	fclose(g);
	return 0;
}