Cod sursa(job #658968)

Utilizator CS-meStanca Marian Ciprian CS-me Data 9 ianuarie 2012 20:46:44
Problema Factoriale Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<stdio.h>
#include<string.h>
FILE *fin=fopen("factoriale.in","r");
FILE *fout=fopen("factoriale.out","w");
int prim[]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int exp[30],rez[60000],n,k,i,j,p,x;

void X_mic(int a[], int b){
int i,t=0;
      for(i=1; i<=a[0] || t ; i++,t/=10)
              a[i] = (t += a[i] * b) % 10;
      a[0] = i - 1;
}

int main(){

    fscanf(fin,"%d %d",&n,&k);

    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&x);

        for(j=1;prim[j]<=x && j<=25;j++){
            p=prim[j];
            while(p<=x){
                exp[j]+=x/p;
                p*=p;
            }
        }
    }

    for(i=1;i<=25;i++){
        if(exp[i]%k>0){
            exp[i]=k-( exp[i]%k );
        }
        else exp[i]=0;
    }

    rez[1]=1;
    rez[0]=1;

    for(i=1;i<=25;i++){
        for(p=1;p<=exp[i];p++){
            X_mic(rez,prim[i]);
        }
    }

    for(i=rez[0];i>=1;i--){
        fprintf(fout,"%d",rez[i]);
    }


return 0;
}