Cod sursa(job #340309)

Utilizator ZethpixZethpix Zethpix Data 14 august 2009 10:01:42
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
long a[102],sol[10002],c[102],n,k,i,j,max;
void inmultire(long b){
	long t,i;
	i=1;
	t=0;
	while(i<=sol[0]||t){
		t=sol[i]*b+t;
		sol[i]=t%10;
		t/=10;
		i++;
	}
	sol[0]=i-1;
}
void calcul(long n){
	long i,x,t;
	for(t=2;t<=n;t++){
		x=t;
		i=2;
		while(x%i==0){
			x/=i;
			a[i]++;
		}
		i=3;
		do{
			while(x%i==0){
				x/=i;
				a[i]++;
			}
			i+=2;
		}while(x!=1);
	}
}
int main(){
	FILE *f,*g;
	f=fopen("factoriale.in","r");
	g=fopen("factoriale.out","w");
	fscanf(f,"%ld%ld",&n,&k);
	for(i=1;i<=n;i++){
		fscanf(f,"%ld",&c[i]);
		if(max<c[i]) max=c[i];
	}
	for (i=1;i<=max;i++)
		a[i]=0;
	sol[0]=1;
	sol[1]=1;
	for(i=1;i<=n;i++)
		calcul(c[i]);
	for(i=2;i<=max;i++)
		if(a[i]%k)
			for(j=1;j<=k-a[i]%k;j++)
				inmultire(i);
	for(i=sol[0];i>=1;i--)
		fprintf(g,"%ld",sol[i]);
	fprintf(g,"\n");
	fclose(f);
	fclose(g);
	return 0;
}