Pagini recente » Cod sursa (job #1036518) | Cod sursa (job #2028725) | Cod sursa (job #2340513) | Cod sursa (job #361380) | Cod sursa (job #881883)
Cod sursa(job #881883)
#include <cstdio>
#include <cstring>
const int BASE(1000000);
const int DIGITS(6);
const int MAX_SIZE(300);
int a [MAX_SIZE], b [MAX_SIZE], c [MAX_SIZE];
int n;
inline void read (void)
{
std::freopen("nunta.in","r",stdin);
std::scanf("%d",&n);
std::fclose(stdin);
}
inline void print (void)
{
std::freopen("nunta.out","w",stdout);
std::printf("%d",c[c[0]]);
int d, number;
for (int index(c[0] - 1) ; index ; --index)
{
for (number = c[index], d = 0 ; number ; number /= 10, ++d)
/* do nothing */;
d = DIGITS - d;
while (d)
{
std::putchar('0');
--d;
}
if (c[index])
std::printf("%d",c[index]);
}
std::putchar('\n');
std::fclose(stdout);
}
inline void add (int a [ ], int b [ ])
{
int i, t(0);
for (i = 1 ; i <= a[0] || i <= b[0] || t ; ++i, t /= 10)
a[i] = (t += a[i] + b[i]) % 10;
a[0] = i - 1;
}
inline void Fibbonaci (void)
{
if (n == 1)
{
c[0] = c[1] = 1;
return;
}
a[0] = b[0] = a[1] = b[1] = 1;
for (int counter(1) ; counter < n ; ++counter)
{
std::memset(c,0,(c[0] + 1) * sizeof(int));
add(c,a);
add(c,b);
std::memcpy(a,b,(b[0] + 1) * sizeof(int));
std::memcpy(b,c,(c[0] + 1) * sizeof(int));
}
}
int main (void)
{
read();
Fibbonaci();
print();
return 0;
}