Cod sursa(job #181957)

Utilizator albuaAlbu Alexandru albua Data 20 aprilie 2008 08:22:21
Problema Factoriale Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>

FILE *f,*g;
int prim[30];
int a[100],n,k,x,i,j,temp,p;
long rez;

void genereazaprime(void)
{
  char c[120];
  int i,j;
  for(i=0;i<=100;i++)c[i]=0;
  for(i=2;i<=50;i++)
    if(c[i]!=1)
	  for(j=i*2;j<=100;j+=i)
	    c[j]=1;
  for(i=2;i<=100;i++)
    if(c[i]==0)
	  prim[++prim[0]]=i;
}

int main()
{
  f=fopen("factoriale.in","r");
  g=fopen("factoriale.out","w");
  genereazaprime();
  fscanf(f,"%d %d\n",&n,&k);
  for(i=1;i<=n;i++)
    {
      fscanf(f,"%d",&x);
      for(p=2;p<=x;p++)
	{
	  temp=p;
	  for(j=1;(j<=prim[0])&&(temp!=1);j++)
	    if(temp%prim[j]==0)
	      while(temp%prim[j]==0)
		{
		  a[prim[j]]++;
		  temp/=prim[j];
		}
	}
    }
  rez=1;
  for(i=2;i<=100;i++)
    if(a[i]!=0)
      if(a[i]%k!=0)
	while(a[i]%k!=0)
	  {
	    a[i]++;
	    rez*=i;
	  }
  fprintf(g,"%lld\n",rez);
  fclose(f);   fclose(g);
  return 0;
}