Cod sursa(job #160393)

Utilizator sraduvictorSarmasag Radu Victor sraduvictor Data 15 martie 2008 12:47:01
Problema Factoriale Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>

void mul(int A[], int B)   
{   
      int i, t = 0;   
      for (i = 1; i <= A[0] || t; i++, t /= 10)   
              A[i] = (t += A[i] * B) % 10;   
      A[0] = i - 1;   
}

int prime[100];

int main( int argc, char *argv[] )
{
	int n, k;
	memset( prime, 0, sizeof( prime ) );
	FILE *fin = fopen( "factoriale.in", "r" );
	fscanf( fin, "%d %d", &n, &k );
	for ( int i = 0; i < n; i++ )
	{
		int x; 
		fscanf( fin, "%d", &x );
		for ( int k = 2; k <= x; k++ )
		{
			int xx = k;
			for ( int j = 2; j < 100 && xx > 1; j++ )
				while ( xx % j == 0 )
				{
					prime[j]++;
					xx /= j;
				}
		}
	}
	fclose( fin );
	
	int vec[100];
	vec[0] = 1;
	vec[1] = 1;
	
	for ( int i = 2; i < 100; i++ )
		while ( prime[i] % k != 0 )
		{
			mul( vec, i );
			prime[i]++;
		}
		
	FILE *fout = fopen( "factoriale.out", "w" );
	for ( int i = vec[0]; i > 0; i-- )
		fprintf( fout, "%d\n", vec[i] );
	fclose( fout );
	
	return 0;
}