Pagini recente » Cod sursa (job #1693976) | Cod sursa (job #2694366) | Cod sursa (job #2815831) | Cod sursa (job #1618373) | Cod sursa (job #238096)
Cod sursa(job #238096)
#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;
}