Cod sursa(job #504050)

Utilizator loginLogin Iustin Anca login Data 26 noiembrie 2010 16:24:13
Problema Factoriale Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
# include <fstream>
# include <iostream>
# include <algorithm>
using namespace std;
int n, k, v[103], p[103], e[103], ex[103];
long long sol=1;

void read ()
{
	ifstream fin ("factoriale.in");
	fin>>n>>k;
	for(int i=1;i<=n;++i)
		fin>>v[i];
	sort(v+1,v+n+1);
}

void prime ()
{
	p[1]=2;
	p[0]=1;
	int pp;
	for(int i=3;i<100;++i)
	{
		pp=1;
		for(int j=1;j<=p[0] && pp;++j)
			if(i%p[j]==0)
				pp=0;
		if (pp)
			p[++p[0]]=i;
	}
}

void solve ()
{
	int poz=1, nr;
	for(int i=2;i<=n;++i)
	{
		nr=i;
		for(int j=1;j<=p[0];++j)
			while (nr%p[j]==0)
			{
				++e[j];
				nr/=p[j];
			}
		while (v[poz]==i)
		{
			for(int j=1;j<=p[0];++j)
				ex[j]+=e[j];
			++poz;
		}
	}
	for(int i=1;i<=p[0];++i)
		if (ex[i]%k)
			for(int j=1;j<=k-ex[i]%k;++j)
				sol+=p[i];
}

int main ()
{
	read ();
	prime ();
	solve ();
	ofstream fout ("factoriale.out");
	fout<<sol;
	return 0;
}