Pagini recente » Cod sursa (job #2222621) | Cod sursa (job #2088488) | Cod sursa (job #2593985) | Cod sursa (job #1594158) | Cod sursa (job #517876)
Cod sursa(job #517876)
#include <cstdio>
#include <cstring>
#define file_in "nunta.in"
#define file_out "nunta.out"
int n;
int a[10100];
int b[10100];
int c[10100];
void citire()
{
//freopen(file_in,"r",stdin);
//freopen(file_out,"w",stdout);
scanf("%d",&n);
}
#define baza 1000
void scrie(int a[])
{
int i;
printf("%d", a[a[0]]);
for (i=a[0]-1;i>=1;--i)
printf("%03d", a[i]);
}
void inm(int a[],int cif)
{
int i,t=0;
for (i=1;i<=a[0] || t;++i,t/=baza)
a[i]=(t+=a[i]*cif)%baza;
a[0]=i-1;
}
void add(int a[], int b[])
{
int i,t=0;
for (i=1;i<=a[0] || i<=b[0] || t;++i,t/=baza)
a[i]=(t+=a[i]+b[i])%baza;
a[0]=i-1;
}
void mul(int A[], int B[], int C[])
{
int i,j,t;
for (i = 1; i <= A[0]; i++)
{
for (t=0, j=1; j <= B[0] || t; j++, t/=baza)
C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%baza;
if (i + j - 2 > C[0]) C[0] = i + j - 2;
}
}
void solve()
{
int i;
//..baga fibonacciu
a[0]=a[1]=1;
b[0]=1;
b[1]=2;
for(i=3;i<=n;++i)
{
memcpy(c,b,sizeof(b));
add(b,a);
memcpy(a,c,sizeof(c));
}
scrie(b);
}
int main()
{
citire();
if (n==1)
printf("1\n");
else
solve();
fclose(stdin);
fclose(stdout);
return 0;
}