Cod sursa(job #214476)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 14 octombrie 2008 19:13:02
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <math.h>
#include <string.h>

long n, f1[256], f2[256], f[256], i;

void add(long *v1, long *v2) {
	long i, t = 0;
	for (i = 1; i <= v1[0] || i <= v2[0] || t; ++i, t /= 10) {
		v1[i] = (t += v1[i] + v2[i]) % 10;
	}
	v1[0] = i - 1;
}

void copy(long *v1, long *v2) {
	long i = 0;
	for (i = 0; i <= v2[0]; ++i) {
		v1[i] = v2[i];
	}
}


int main() {
	freopen("nunta.in", "r", stdin);
	freopen("nunta.out", "w", stdout);
	scanf("%ld", &n);
	if (n == 1) {printf("1");return 0;}
	if (n == 2) {printf("2");return 0;}
	f1[0] = 1;f1[1] = 1;
	f2[0] = 1;f2[1] = 2;
	for (i = 1; i < n - 1; ++i) {
		memset(f, 0, sizeof(f));
		add(f, f1);
		add(f, f2);
		copy(f1, f2);
		copy(f2, f);
	}
	for (i = f2[0]; i >= 1; --i) {
		printf("%ld", f2[i]);
	}
	return 0;
}