Cod sursa(job #132241)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 5 februarie 2008 14:27:09
Problema Factoriale Scor Ascuns
Compilator cpp Status done
Runda Marime 0.67 kb
#include <stdio.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()
{
	freopen("factoriale.in","r",stdin);
	freopen("factoriale.out","w",stdout);
	int i,j,l,aux;
	scanf("%d %d",&n,&k);
	FOR(i,0,n)
		scanf("%d",&X[i]);
	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;
}