Pagini recente » Cod sursa (job #99558) | Cod sursa (job #20298) | Cod sursa (job #2175055) | Cod sursa (job #42013) | Cod sursa (job #145306)
Cod sursa(job #145306)
#include <stdio.h>
#include <assert.h>
#define nmax 65536
#define BAZA 1000000
#define FOR(i,s,d) for(i=(s);i<(d);++i)
int n,k,X[nmax],A[nmax];
void inm(int x)
{
int i,t=0;
for(i=1;i<=A[0]||t;++i)
{
A[i]=A[i]*x+t;
t=A[i]/BAZA;
A[i]%=BAZA;
}
A[0]=i-1;
}
int main()
{
assert(freopen("factoriale.in","r",stdin));
freopen("factoriale.out","w",stdout);
int i,j,l,aux;
assert(scanf("%d %d",&n,&k)==2);
assert(1<=n && n<=100);
assert(2<=k && k<=100);
FOR(i,0,n)
{
assert(scanf("%d",&X[i])==1);
assert(1<=X[i] && X[i]<=100);
}
A[0]=A[1]=1;
FOR(i,2,100)
{
FOR(j,2,i) if(i%j==0) break;
if(i!=j) continue;
for(aux=0,l=i;l<100;l*=i)
FOR(j,0,n)
aux+=X[j]/l;
l=(k-aux%k)%k;
FOR(j,0,l) inm(i);
}
printf("%d",A[A[0]]);
for(i=A[0]-1;i;--i)
printf("%06d",A[i]);
printf("\n");
return 0;
}