Pagini recente » Cod sursa (job #682500) | Cod sursa (job #605815) | Cod sursa (job #1918094) | Cod sursa (job #609070) | Cod sursa (job #1790453)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("nunta.in");
ofstream g("nunta.out");
unsigned char f1[212] = {1, 1}, f2[212] = {1, 2};
void adun(unsigned char f1[], unsigned char f2[])
{
int t = 0;
for(int i = 1; i <= f2[0] ; i++)
{
t += f1[i] + f2[i];
f1[i] = t % 10;
t /= 10;
}
f1[0] = f2[0];
while(t > 0)
{
f1[++f1[0]] = t % 10;
t /= 10;
}
}
void afisare(unsigned char a[])
{
for(int i = a[0]; i > 0; i--)
g << int(a[i]);
}
void fib(int N)
{
if(N <= 2)g << N;
else
{
unsigned char *p1 = &f1[0], *p2 = &f2[0], *px;
for(int i = 3; i <= N; i++)
{
adun(p1, p2);
px = p1;
p1 = p2;
p2 = px;
}
afisare(p2);
}
}
int main()
{
int N;
f >> N;
fib(N);
return 0;
}