Cod sursa(job #158562)

Utilizator katakunaCazacu Alexandru katakuna Data 13 martie 2008 18:16:30
Problema Factoriale Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>

int p[40]={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 kk,tt,nr[1000],y,l,j,t[1001],aux,m[101][20],n,k,i,max,v[101];

int main(){




FILE *f=fopen("factoriale.in","r");

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

  for(i=1;i<=n;i++){
  fscanf(f,"%d",&v[i]);
    if(v[i]>max)
    max=v[i];
  }

fclose(f);

  for(i=2;i<=max;i++){
  aux=i;
  kk=0;

    while(aux!=1){
    kk++;

      while(aux%p[kk]==0){
      m[i][0]++;
      m[i][ m[i][0] ]=p[kk];
      aux/=p[kk];
      }
    }


  }


  for(l=1;l<=n;l++){

    for(i=2;i<=v[l];i++){

      for(j=1;j<=m[i][0];j++){
      t[m[i][j]]++;

      }

    }

  }


nr[0]=1;
nr[1]=1;

  for(i=2;i<=max;i++){

   if(t[i]!=0&&t[i]%k){
   y=k-(t[i]%k);

     for(j=1;j<=y;j++){
     //nr*=i;
     tt=0;

       for(l=1;l<=nr[0]||tt;l++,tt/=10){
       tt+=nr[l]*i;
       nr[l]=tt%10;
       }

     nr[0]=l-1;
     }

   }

  }



FILE *g=fopen("factoriale.out","w");
  for(i=nr[0];i>=1;i--){
  fprintf(g,"%d",nr[i]);
  }
fclose(g);

return 0;
}