Cod sursa(job #480567)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 28 august 2010 17:22:54
Problema Nunta Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
using namespace std;

#define MAX 100000

int fib1[MAX], fib2[MAX], suma[MAX];
int n, i, j, k;

void initializare (int nr[])
{
    for (i=0; i<MAX; ++i)
        nr[i] = 0;
}

void afisare (int nr[])
{
    FILE *g = fopen ("nunta.out","w");

    for (i=nr[0]; i>=1; --i)
        fprintf (g, "%d", nr[i]);
    fprintf (g, "\n");

    fclose (g);
}

void adunare (int nr1[], int nr2[], int suma[])
{
    initializare (suma);
    int suma_cf, suma_tr, cf;
    suma_cf = suma_tr = cf = 0;

    for (i=1; i<=nr1[0] || i<=nr2[0]; ++i, ++cf)
    {
        suma_cf = nr1[i] + nr2[i] + suma_tr;
        suma[i] = suma_cf % 10;
        suma_tr = suma_cf / 10;
    }
    if (suma_tr)
    {
        suma[i] = suma_tr;
        cf ++;
    }

    suma[0] = cf;
    for (i=0; i<=fib2[0]; ++i)
        fib1[i] = fib2[i];
    for (i=0; i<=suma[0]; ++i)
        fib2[i] = suma[i];

}

int main ()
{
    FILE *f = fopen ("nunta.in","r");

    fscanf (f,"%d", &n);

    fib1[0] = fib2[0] = fib1[1] = fib2[1] = 1;

    for (k=3; k<=n+1; ++k)
        adunare (fib1, fib2, suma);

    afisare (suma);

    fclose (f);
    return 0;
}