Cod sursa(job #115948)

Utilizator floringh06Florin Ghesu floringh06 Data 17 decembrie 2007 14:32:17
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <cstring>

using namespace std;

#define FIN "nunta.in"
#define FOUT "nunta.out"
#define MAX_N 100
#define Bas 1000000000

int A[MAX_N];
int B[MAX_N];
int S[MAX_N];
int N, i;

    void Init ( void )
    {
         A[0] = A[1] = 1;
         B[0] = B[1] = 1;
    }
    
    void add (int A[], int B[])
    {
         memset (S, 0, sizeof (S));
         int i, t = 0;
         for (i = 1; i <= A[0] || i <= B[0] || t; ++i, t/=Bas)
             S[i] = (t += A[i] + B[i])%Bas;
         S[0] = i - 1;
    }
    

    int main ()
    {
        freopen (FIN, "r", stdin);
        freopen (FOUT, "w", stdout);
        
        scanf ("%d", &N);
        
        if (N == 1) 
        {
              printf ("1");
              return 0;
        }
        
        Init();
        for (i = 3; i <= N + 1; ++i)
        {
            add(A, B);
            memcpy (A, B, sizeof (B));
            memcpy (B, S, sizeof (S));
        }
        
        printf ("%d", S[S[0]]);
        for (i = S[0] - 1; i; --i)   
            printf ("%09d", S[i]);
        
        return 0;
    }