Cod sursa(job #1603986)

Utilizator dnprxDan Pracsiu dnprx Data 17 februarie 2016 21:19:16
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
using namespace std;
short a[1005], b[1005], c[1005], na, nb, nc, n;
/// c = a + b
inline void Aduna()
{
    short i, t, x;
    t = 0;
    nc = nb;
    for (i = 1; i <= nb; ++i)
    {
        x = a[i] + b[i] + t;
        if (x >= 10) {c[i] = x - 10; t = 1;}
        else {c[i] = x; t = 0;}
    }
    if (t > 0)
        c[++nc] = 1;
}
/// a = b
inline void Copie(short a[], short &na, short b[], short nb)
{
    short i;
    na = nb;
    for (i = 1; i <= na; ++i)
        a[i] = b[i];
}

int main()
{
    short i;
    ofstream fout("nunta.out");
    ifstream fin("nunta.in");
    fin >> n;
    fin.close();

    if (n == 1)
    {
        fout << "1\n";
        fout.close();
        return 0;
    }
    if (n == 2)
    {
        fout << "2\n";
        fout.close();
        return 0;
    }
    a[1] = na = 1;
    b[1] = 2; nb = 1;
    for (i = 3; i <= n; ++i)
    {
        Aduna();
        Copie(a, na, b, nb);
        Copie(b, nb, c, nc);
    }
    /// afisare
    for (i = nc; i >= 1; --i)
        fout << c[i];
    fout << "\n";
    fout.close();
    return 0;
}