Cod sursa(job #1787161)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 24 octombrie 2016 11:36:48
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 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[MAXN], M2[MAXN], aux[MAXN];

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[])
{
    int i, t = 0;
    for (i = 1; i <= A[0] || i <= B[0] || t; i++, t /= 10)
        A[i] = (t += A[i] + B[i]) % 10;
    A[0] = i - 1;
}

void copiere (unsigned char A[], unsigned char B[])
{
    A[0] = B[0];
    for (int i = 1; i <= A[0]; i++)
        A[i] = B[i];
}

int main()
{
    f >> N;

    M1[0] = M2[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++)
        {
            copiere (aux, M2);
            add (M2, M1);
            copiere (M1, aux);
        }
    }
    afisare (M2);

    return 0;
}