Cod sursa(job #528027)

Utilizator Catah15Catalin Haidau Catah15 Data 1 februarie 2011 20:12:40
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <vector>
using namespace std;

bool prim[110];
vector <int> primes;
int power[110];


void inmultire(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;
}


void ciur()
{
	for(int i = 2; i <= 100; ++i)
	{
		if(!prim[i])
			primes.push_back(i);
		
		for(int j = i + i; j <= 100; j += i)
			prim[j] = 1;
		
	}
}


int main()
{
	int n, k;
	
	
	ifstream f("factoriale.in");
	ofstream g("factoriale.out");
	
	f >> n >> k;
	
	ciur();
	
	for(int i = 1; i <= n; ++i)
	{
		int nr;
		
		f >> nr;
		
		for(unsigned int j = 0; j < primes.size() && nr >= primes[j]; ++j)
		{
			int c = nr;
			
			while(c != 0)
			{
				c /= primes[j];
				
				power[j] += c;
			}
		}
		
	}
	
	int sol[10001];
	sol[0] = 1;
	sol[1] = 1;
	
	for(unsigned int i = 0; i < primes.size(); ++i)
		if(power[i] && power[i] % k)
			for(int j = 1; j <= k - (power[i] % k); ++j)
				inmultire(sol, primes[i]);
		
	for(int i = sol[0]; i > 0; --i)
		g << sol[i];
	
	f.close();
	g.close();
	
	return 0;
}