Cod sursa(job #190496)

Utilizator crusRus Cristian crus Data 22 mai 2008 21:44:01
Problema Nunta Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#define input "nunta.in"
#define output "nunta.out"
#define nmax 1000
int n,s1[nmax],s2[nmax],s3[nmax];
void citire()
{
 freopen(input,"r",stdin);
 scanf("%d",&n);
}
void add(int d[], int s[])
{
 int i,t=0;
 if (s[0]>d[0]) d[0]=s[0];
 for (i=1;i<=d[0];i++)
     {
      d[i]+=t+s[i];
      t=d[i]/10;
      d[i]%=10;
     }
 while (t)
       {
	d[0]++;
	d[d[0]]=t%10;
	t/=10;
       }
}
void fill(int d[],int v,int n)
{
 int i;
 for (i=0;i<=n;i++) d[i]=v;
}
void copy(int d[],int s[])
{
 int i;
 for (i=1;i<=d[0];i++) d[0]=0;
 for (i=0;i<=s[0];i++) d[i]=s[i];
}
void solve()
{
 int i;
 s1[1]=1;
 s1[0]=1;
 s2[1]=2;
 s2[0]=1;
 for (i=3;i<=n;i++)
     {
      fill(s3,0,n);
      add(s3,s1);
      add(s3,s2);
      copy(s1,s2);
      copy(s2,s3);
     }
}
void afisare()
{
 int i;
 freopen(output,"w",stdout);
 for (i=s3[0];i;i--)
     printf("%d",s3[i]);
}
int main()
{
 citire();
 solve();
 afisare();
 return 0;
}