Cod sursa(job #504986)

Utilizator Robert29FMI Tilica Robert Robert29 Data 29 noiembrie 2010 20:10:55
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
FILE*f=fopen("factoriale.in","r");
FILE*g=fopen("factoriale.out","w");
int X,n,z,i,j,k,x,p[50],v[102];
int sol[20000];
void inmult(int H[],int X){
	int i;
	int T=0;

    for (i=1;i<=H[0];i++){ 
		H[i]=H[i]*X+T;
        T=H[i]/10;
        H[i]=H[i]%10;
    }
    while (T){ 
		H[++H[0]]=T%10;
        T/=10;
    }
}
int main() {
	for(i=2;i<=100;i++)
		if(v[i]==0){
			for(j=2*i;j<=100;j+=i)
				v[j]=1;
			p[++k]=i;
		}
	for(i=1;i<=100;i++)
		v[i]=0;
	fscanf(f,"%d%d",&n,&z);
	for(i=1;i<=n;i++){
		fscanf(f,"%d",&x);
		for(j=2;j<=x;j++){
			k=1;
			X=j;
			while(X!=1){
				while(X%p[k]==0){
					v[p[k]]++;
					X/=p[k];
				}
				k++;
			}
		}
	}
	sol[0]=sol[1]=1;
	for(i=2;i<=100;i++)
		if(v[i]%z!=0)
			for(j=1;j<=(z-v[i]%z);j++)
				inmult(sol,i);
				
	for(i=sol[0];i;i--)	
		fprintf(g,"%d",sol[i]);	
	fclose(g);
	fclose(f);
	return 0;
}