Pagini recente » Cod sursa (job #2884470) | Cod sursa (job #983810) | Cod sursa (job #1938917) | Cod sursa (job #1969527) | Cod sursa (job #322319)
Cod sursa(job #322319)
#include<stdio.h>
#include<math.h>
FILE *in=fopen("factoriale.in","r"),*out=fopen("factoriale.out","w");
int n,k,x1,v[100];
int rez[1000];
void inmultire(int x[], int y)
{
int i;
unsigned long T=0;
for(i=1;i<=x[0];i++)
{
x[i]=x[i]*y+T;
T=x[i]/100000;
x[i]=x[i]%100000;
}
while (T)
{
x[0]++;
x[x[0]]=T%100000;
T/=10;
}
}
int main()
{
int i,j,q,aux;
fscanf(in,"%d %d",&n,&k);
for(i=1; i<=n; i++)
{
fscanf(in,"%d",&x1);
for(q=2;q<=x1;q++)
{
aux=q;
j=2;
while(aux>1)
{
if(aux%j==0)
{
v[j]++;
aux/=j;
}
else break;
}
j=3;
while(aux>1)
{
if(aux%j==0)
{
v[j]++;
aux/=j;
}
else
j+=2;
}
}
}
rez[0]=1;
rez[1]=1;
j=2;
if(v[j]&&v[j]%k)
inmultire(rez,pow(j,k-j%k));
for(j=3;j<=100;j+=2)
if(v[j]&&v[j]%k)
inmultire(rez,pow(j,k-j%k));
for(i=rez[0];i>0;i--)
fprintf(out,"%d",rez[i]);
fclose(out);
return 0;
}