Cod sursa(job #528015)

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

bool prim[103];
vector <int> primes;
int power[100];


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;
			}
		}
		
	}
	
	long long sol = 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)
				sol *= primes[i];
		
	g << sol;
	
	f.close();
	g.close();
	
	return 0;
}