Cod sursa(job #137210)

Utilizator kojocojocaru aurelian kojo Data 17 februarie 2008 10:17:41
Problema Factoriale Scor 40
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasa a 9-a Marime 0.74 kb
#include<fstream.h>
#include<math.h>
ifstream f("factoriale.in");
ofstream g("factoriale.out");
int n,a[101],b[101],i,k;
void bord()
{for(int j=2;j<=100;j++)
	if(b[j]==0)
		for(int y=j*2;y<=100;y+=j)
			b[y]=-1;
}
void lucr(int x)
{int q=x;
for(int j=2;j<=x&&q;j++)
	while(q%j==0&&q)
		{b[j]++;q/=j;}
}
int prod()
{int p=1;
if(b[2])
    {if(b[2]>k&&b[2]%k)
	p*=pow(2,k-b[2]%k);
     if(b[2]<k)
	p*=pow(2,k-b[2]);
    }
for(int j=3;j<=97;j+=2)
	if(b[j]>0)
	    {if(b[j]>k&&b[j]%k)
		p*=pow(j,k-b[j]%k);
	     if(b[j]<k)
                p*=pow(j,k-b[j]);
	    }
return p;
}
int main()
{
f>>n>>k;
for(i=1;i<=n;i++)
	f>>a[i];
bord();
for(i=1;i<=n;i++)
   for(int l=2;l<=a[i];l++)
	lucr(l);
g<<prod();
return 0;
}