Cod sursa(job #138442)

Utilizator katakunaCazacu Alexandru katakuna Data 18 februarie 2008 17:28:55
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>

long long tr,b,nr[10000],j,a,m[101][10],l,t[101],n,k,i,v[101],max,aux;

int p[50]={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,101};

int main(){


FILE *f=fopen("factoriale.in","r");
fscanf(f,"%lld %lld",&n,&k);

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

fclose(f);

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

 j=1;
   while(aux!=1){


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

      }

   j++;
   }

 }


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

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

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

   }

 }

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

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

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

   for(l=1;l<=a;l++){
   tr=0;


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

   nr[0]=j-1;

   }

   }

  }


FILE *g=fopen("factoriale.out","w");

   for(i=nr[0];i>=1;i--){
   fprintf(g,"%lld",nr[i]);
   }

fclose(g);


return 0;
}