Pagini recente » Monitorul de evaluare | Cod sursa (job #4076) | Profil jolgau | Cod sursa (job #3197844) | Cod sursa (job #115945)
Cod sursa(job #115945)
#include <cstdio>
#include <cstring>
using namespace std;
#define FIN "nunta.in"
#define FOUT "nunta.out"
#define MAX_N 300
#define Bas 1000000000
int A[MAX_N];
int B[MAX_N];
int S[MAX_N];
int N, i;
void Init ( void )
{
A[0] = A[1] = 1;
B[0] = B[1] = 1;
}
void add (int A[], int B[])
{
memset (S, 0, sizeof (S));
int i, t = 0;
for (i = 1; i <= A[0] || i <= B[0] || t; ++i, t/=Bas)
S[i] = (t += A[i] + B[i])%Bas;
S[0] = i - 1;
}
int main ()
{
freopen (FIN, "r", stdin);
freopen (FOUT, "w", stdout);
scanf ("%d", &N);
if (N == 1)
{
printf ("1");
return 0;
}
Init();
for (i = 3; i <= N + 1; ++i)
{
add(A, B);
memcpy (A, B, sizeof (B));
memcpy (B, S, sizeof (S));
}
printf ("%d", S[S[0]]);
for (i = S[0] - 1; i; --i)
printf ("%09d", S[i]);
return 0;
}