Cod sursa(job #323742)

Utilizator freak93Adrian Budau freak93 Data 13 iunie 2009 12:39:58
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<cstring>
#define maxv 212

using namespace std;

ifstream f("nunta.in");
ofstream g("nunta.out");

int n,a[maxv],b[maxv],c[maxv],i;

void add(int *A, int *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;
}

int main()
{
    a[0]=1;
    a[1]=1;
    b[0]=1;
    b[1]=1;

    f>>n;

    c[0]=1;

    for(i=1;i<n;++i)
    {
        if(i%3==1)
            add(c,a),add(c,a);
        else
            if(i%3==2)
                add(a,b),add(a,b);
            else
                add(b,c),add(b,c);

    }

    if(n==1)
        g<<"1";
    else
        if(n%3==2)
            for(i=c[0];i;--i)
                g<<c[i];
        else
            if(n%3)
                for(i=b[0];i;--i)
                    g<<b[i];
            else
                for(i=a[0];i;--i)
                    g<<a[i];

    g<<"\n";

    f.close();
    g.close();

    return 0;
}