Cod sursa(job #206862)

Utilizator IrnukIrina Grosu Irnuk Data 10 septembrie 2008 12:16:17
Problema Factoriale Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
/*factoriale*/


#include<fstream.h>
#include<math.h>

int v[100],n,k,x,prime[30];
unsigned long numar;

ifstream fin("factor.in");
ofstream fout("factor.out");

void prim()
{
	int i,ok,j;
	double d;
	for(i=2;i<98;i++)
	{
		ok=0;
		d=sqrt(i);
		for(j=2;j<=d && ok==0;j++)
			if(i%j==0)
				ok=1;
		if(ok==0)
			prime[++prime[0]]=i;
	}

}

void fact(int x)
{
	int sv=x,k,i,nr;
	for(i=2;i<=sv;i++)
	{
		k=1;
		nr=i;
		while(nr!=1)
		{
			while(nr%prime[k]==0 && nr!=1)
			{
				nr/=prime[k];
				v[prime[k]]++;
			}
			k++;
		}

	}
}

int main()
{
	int i,nr;
	fin>>n>>k;
        prim();
	for(i=0;i<n;i++)
	{
		fin>>x;
		fact(x);
	}

	for(i=2;i<98;i++)
	{
		if(v[i]!=0)
		{
			if(v[i]%k!=0)
			{
				nr=(v[i]/k+1)*k-v[i];
			numar=numar+nr*i;
			}
		}
	}

	fout<<numar<<'\n';
	fout.close();
	return 0;
}