Cod sursa(job #238096)

Utilizator Omega91Nicodei Eduard Omega91 Data 31 decembrie 2008 16:24:49
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include <cstring>

void add(unsigned int x[], unsigned int y[])
{
	int i, t = 0, l = x[0] > y[0] ? x[0] : y[0];
	for (i = 1; i <= l || t; ++i, t /= 10)
		x[i] = (t += x[i] + y[i]) % 10;
	x[0] = (i - 1);
}

char* fibo(int N)
{
	const int MDIG = 212;
	char* ans = new char[MDIG];
	unsigned int e1[MDIG] = {1, 0}, e2[MDIG] = {1, 1}, k = 0;
	unsigned int *p1 = e1, *p2 = e2, *aux;
	int i;
	for (i = 1; i <= N; ++i) {
		add(p1, p2);
		aux = p1; p1 = p2; p2 = aux;
	}
	for (i = p2[0]; i != 0; --i) ans[k++] = p2[i] + '0';
	ans[k] = 0;
	return ans;
}



int main()
{
	int N; char *s;
	freopen("nunta.in", "r", stdin);
	freopen("nunta.out", "w", stdout);
	scanf("%d", &N);
	s = fibo(N);
	printf("%s\n", s);
	delete[] s;
	fclose(stdin); fclose(stdout);
	return 0;
}