Cod sursa(job #1787194)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 24 octombrie 2016 12:01:36
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("nunta.in");
ofstream g ("nunta.out");
const int MAXN = 220;
short int N;
unsigned char *M1, *M2, *M3, *aux;


void afisare (unsigned char A[])
{
    for (int i = A[0]; i >= 1; i--)
        g << int (A[i]);
}

void add (unsigned char A[], unsigned char B[], unsigned char C[])
{
    int i, t = 0;
    for (i = 1; i <= A[0] || i <= B[0] || t; i++, t /= 10)
        C[i] = (t += A[i] + B[i]) % 10;
    C[0] = i - 1;
}

int main()
{
    M1 = new unsigned char[MAXN];
    M2 = new unsigned char[MAXN];
    M3 = new unsigned char[MAXN];
    f >> N;
    for (int i = 1; i < MAXN; i++)
        M1[i] = M2[i] = M3[i] = 0;
    M1[0] = M2[0] = M3[0] = 1;

    if (N == 0) M2[1] = 0;
    else if (N == 1) M2[1] = 1;
    else
    {
        M1[1] = 1, M2[1] = 2;
        for (int i = 3; i <= N; i++)
        {
            add (M1, M2, M3);
            aux = M1;
            M1 = M2;
            M2 = M3;
            M3 = aux;
        }
    }
    afisare (M2);

    return 0;
}