Cod sursa(job #1944143)

Utilizator mariusn01Marius Nicoli mariusn01 Data 28 martie 2017 22:52:14
Problema Nunta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>

char f1[210], f2[210];


inline int getCifra(char *a, int i){
    return ((i>a[0]) ? 0 : a[i]);
}

void suma(char *a, char *b, char *c) {
    int t = 0,max;
    max = a[0];
    if (max<b[0])
        max=b[0];
    for (int i=1;i<=max;i++) {
        int aux = getCifra(a,i)+getCifra(b,i)+t;
        c[i]=aux%10;
        t=aux/10;
    }
    if (t==1) {
        c[0]=max+1;
        c[max+1]=1;
    } else {
        c[0]=max;
    }
}



int main(){
    int n,i;
    FILE *fin = fopen("nunta.in","r");
    fscanf(fin,"%d",&n);
    FILE *fout = fopen("nunta.out","w");
    if (n<2) {
        fprintf(fout,"%d",1);
    } else {

        f1[0]=1;f1[1]=1;
        f2[0]=1;f2[1]=1;
        for (i=1;i<=n-1;i++) {
            if (i%2 == 1)
                suma(f1, f2, f1);
            else
                suma(f2, f1, f2);
        }
        if (n%2 == 1)
            for (i=f2[0];i>=1;i--){
                fprintf(fout,"%d",f2[i]);
            }
        else
            for (i=f1[0];i>=1;i--){
                fprintf(fout,"%d",f1[i]);
            }
    }

    return 0;
}