Cod sursa(job #1410265)

Utilizator atatomirTatomir Alex atatomir Data 30 martie 2015 23:00:46
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>

using namespace std;

#define maxN 210

    ifstream fin("nunta.in");
    ofstream fout("nunta.out");

class bigNumber{
    public:
        char C[maxN];
        long cnt;

        bigNumber(){
            for(long i=0;i<maxN;i++) C[i]=0;
            C[1] = 1; cnt=1;
        }
        void operator+(bigNumber& who){
            cnt = max(cnt,who.cnt);
            for(long i=1;i<=cnt;i++) C[i] += who.C[i];
            for(long i=1;i<=cnt;i++){
                C[i+1] += C[i]/10;
                C[i] %= 10;
            }
            if(C[cnt+1]) cnt++;
        }
        void write(){
            for(long i=cnt;i;i--) fout << (int)C[i];
        }
};

long n,i,s,d;
long C[2][maxN];

inline void addV(long d,long s){
    C[d][0] = max(C[d][0],C[s][0]);
    long i;
    for(i=1;i<=C[d][0];i++) C[d][i]+=C[s][i];
    for(i=1;i<=C[d][0];i++){
        C[d][i+1] += C[d][i]/10;
        C[d][i] %= 10;
    }
    if(C[d][C[d][0]+1]) C[d][0]++;
}

int main()
{
    fin >> n ; fin.close();
    C[0][0] = C[0][1] = 1;
    C[1][0] = C[1][1] = 1;
    for(i=2;i<maxN;i++) C[0][i]=C[1][i]=0;

    s=0;d=1;
    for(i=2;i<=n;i++){
        s^=1;d^=1;
        addV(d,s);
    }

    for(i=C[d][0];i;i--) fout  << C[d][i];
    fout.close();

    return 0;
}