Cod sursa(job #155874)

Utilizator Andreid91Ciocan Andrei Andreid91 Data 12 martie 2008 11:09:08
Problema Factoriale Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream.h>
#include<math.h>

int prim (int n)
	{
	int i;
	for (i=2;i<=sqrt(n);i++)
		if (n%i==0) return 0;
	return 1;
	}

int calcul (int a, int p)
	{
	int i=1;
	int s=0;
	while (a>=pow(p,i))
		s+=a/((int)pow(p,i++));
	return s;
	}

int main()
{
ifstream f("factoriale.in");
int n,k,v[101],i,j,p=0;
int max=-1;
f>>n>>k;
long b[101];int a[101];
for (i=1;i<=n;i++)
	{
	f>>v[i];
	if (v[i]>max) max=v[i];
	}
f.close();
for (i=2;i<=max;i++)
	if (prim(i)) { a[++p]=i;b[p]=0;}
for (i=1;i<=n;i++)
	for (j=1;j<=p && a[j]<=v[i];j++)
		b[j]+=calcul(v[i],a[j]);
unsigned long q=1;
for (i=1;i<=p;i++) {
		   b[i]=k-b[i]%k;
		   if (b[i]!=k) q=q*pow(a[i],b[i]);
		   }
ofstream g ("factoriale.out");
g<<q;
g.close();
return 0;
}