Cod sursa(job #118393)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 24 decembrie 2007 22:24:04
Problema Nunta Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <string>

#define baza 1000000000
#define maxn 25

int n;
int a[maxn],b[maxn],s[maxn];

void add(int a[],int b[],int c[])
{
    int i,t=0;
    
    for (i=1;i<=b[0] || i<=c[0] || t;i++)
    {
        a[i] = (b[i] + c[i] + t) % baza;
        t = (b[i] + c[i] + t) / baza;
    }
    
    a[0] = i-1;
}

void print(int a[])
{
    int i;
    printf("%d",a[a[0]]);
    for (i=a[0]-1;i>0;i--) printf("%04d",a[i]);
    printf("\n");
}

int main()
{
    freopen("nunta.in","r",stdin);
    freopen("nunta.out","w",stdout);
    
    scanf("%d ",&n);
    
    int i;
    
    if (n==1) 
    {
        printf("1\n");
        return 0;
    }
    
    b[0] = b[1] = 1;
    a[0] =1, a[1]= 2;
    
    for (i=3;i<=n;i++) 
    {
        memset(s,0,sizeof(s));
        add(s,a,b);
        memcpy(b,a,sizeof(a));
        memcpy(a,s,sizeof(s));
    }
    
    print(a);
    
    return 0;
}