Pagini recente » Cod sursa (job #228960) | Cod sursa (job #1307041) | Cod sursa (job #2001897) | Cod sursa (job #766405) | Cod sursa (job #480567)
Cod sursa(job #480567)
#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;
}