Pagini recente » Cod sursa (job #2521478) | Cod sursa (job #2161577) | Cod sursa (job #1422392) | Cod sursa (job #394180) | Cod sursa (job #919437)
Cod sursa(job #919437)
#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]]);
for (int index(c[0] - 1) ; index ; --index)
std::printf("%.6d",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 /= BASE)
a[i] = (t += a[i] + b[i]) % BASE;
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;
}