Cod sursa(job #1839746)

Utilizator georgerapeanuRapeanu George georgerapeanu Data 3 ianuarie 2017 13:49:19
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <cstdio>
#include <vector>
#define BASE 100000000
using namespace std;
FILE *f=fopen("nunta.in","r");
FILE *g=fopen("nunta.out","w");
int V[4][100];
int N;
void add(int a[],int b[],int c[])
{
    c[0]=0;
    int n=max(a[0],b[0]),t=0;
    for(int i=1;i<=n||t;i++)
    {
        c[i]=((i<=a[0] ? a[i]:0)+(i<=b[0] ? b[i]:0)+t);
        t=c[i]/BASE;
        c[i]%=BASE;
        c[0]++;
    }
}
void copiere(int a[],int b[])
{
    for(int i=0;i<=b[0];i++)
        a[i]=b[i];
}
int main()
{
    fscanf(f,"%d",&N);
    V[2][0]=V[2][1]=1;
    V[3][0]=1;V[3][1]=2;
    if(N<=2)
    {
        fprintf(g,"%d",(N==1 ? 1:2));
    }
    else
    {
        int i=3;
        while(i<=N)
        {
            copiere(V[1],V[2]);
            copiere(V[2],V[3]);
            add(V[1],V[2],V[3]);
            i++;
        }
        int n=V[3][0];
        for(int i=n;i>0;i--)
        {
            int CB=BASE/10;
            while(CB>10&&CB>V[3][i]&&i!=n)
            {
                CB/=10;
                fprintf(g,"0");
            }
            fprintf(g,"%d",V[3][i]);
        }
    }
    fclose(f);
    fclose(g);
    return 0;
}