Cod sursa(job #116504)

Utilizator albuaAlbu Alexandru albua Data 18 decembrie 2007 19:10:21
Problema Nunta Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>

FILE *f,*g;
int n,i,j;
int contor[30],a[30],b[30],c[30];

void sumabig(int a[30],int b[30])
{
  int i,t,t1=0;
  if(a[0]<b[0])
    {
      t=0;
      for(i=1;i<=b[0];i++)
	{
	  t1=(a[i]+b[i]+t)/10;
	  c[i]=(a[i]+b[i]+t)%10;
	  t=t1;
	}
      if(t==1)
	{
	  c[0]=b[0]+1;
	  c[c[0]]=1;
	}
      else
	c[0]=b[0];

    }
  else
    {
      t=0;
      for(i=1;i<=a[0];i++)
	{
	  t1=(a[i]+b[i]+t)/10;
	  c[i]=(a[i]+b[i]+t)%10;
	  t=t1;
	}
      if(t==1)
	{
	  c[0]=a[0]+1;
	  c[c[0]]=t;
	}
      else
	c[0]=a[0];
    }
}

int main()
{
  f=fopen("grupe.in","r");
  g=fopen("grupe.out","w");
  fscanf(f,"%d",&n);
  if(n==1)
  {
    fprintf(g,"1\n");
    fclose(f);
    fclose(g);
    return 0;
  }
  a[0]=1;
  a[a[0]]=1;
  b[0]=1;
  b[b[0]]=1;
  contor[0]=1;
  contor[contor[0]]=2;
  for(i=3;i<=n;i++)
    {
      sumabig(a,b);
      for(j=0;j<30;j++)
	a[j]=b[j];
      for(j=0;j<30;j++)
	b[j]=c[j];
      sumabig(contor,c);
      for(j=0;j<30;j++)
	contor[j]=c[j];
      for(j=0;j<30;j++)
	c[j]=0;

    }
  for(i=contor[0];i>=1;i--)
    fprintf(g,"%d",contor[i]);
  fprintf(g,"\n");
  fclose(f);   fclose(g);
  return 0;
}