Cod sursa(job #194666)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 12 iunie 2008 17:07:32
Problema Nunta Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#define Lg 1001
#define NMax 2000

typedef char NrMare[Lg];

int n;
NrMare s1,s2,s3;
int lg1,lg2,lg3;

void suma (NrMare , int , NrMare, int, NrMare, int &);
void copiaza(NrMare, int&, NrMare, int);

int main()
{ int i;
freopen("nunta.in","rt",stdin);
freopen("nunta.out","wt",stdout);
scanf("%d",&n);
lg1=lg2=1;
s1[0]=1;
s2[0]=2;
if (n=1) printf("%d",1);
else
for (i=3; i<=n; i++)
     {
      suma(s1,lg1,s2,lg2,s3,lg3);
      copiaza(s1,lg1,s2,lg2);
      copiaza(s2,lg2,s3,lg3);
     }
for (i=lg3-1; i>=0; i--)
printf("%d",s3[i]);
return 0;
}


void suma (NrMare a, int na, NrMare b, int nb, NrMare s, int & ns)
{int i, cifra, t=0, max;
if (na<nb) {max=nb; for (i=na; i<nb; i++) a[i]=0;}
    else   {max=na; for (i=nb; i<na; i++) b[i]=0;}
for (i=0; i<max; i++)
     {cifra=a[i]+b[i]+t;
      s[i]=cifra%10;
      t=cifra/10;        }
if (t) s[i++]=t;
ns=i; }


void copiaza(NrMare a, int& la, NrMare b, int lb)
{
int i;
la=lb;
for (i=0; i<la; i++) a[i]=b[i];
}