Pagini recente » Cod sursa (job #395697) | Cod sursa (job #2523481) | Cod sursa (job #2778772) | Cod sursa (job #2032251) | Cod sursa (job #1400715)
#include <cstdio>
#define filein "nunta.in"
#define fileout "nunta.out"
using namespace std;
short int nr1[5001], nr2[5001], rez[5001];
int N;
void ReadData();
void PrintData();
void Solve();
void Add();
void Copy(short int *source, short int *destination);
int main()
{
ReadData();
Solve();
PrintData();
return 0;
}
void ReadData()
{
FILE *in;
in=fopen(filein,"r");
fscanf(in,"%d",&N);
fclose(in);
}
void PrintData()
{
FILE *out;
out=fopen(fileout,"w");
register int i;
for (i=rez[0]; i>=1; i--)
fprintf(out,"%d",rez[i]);
fclose(out);
}
void Solve()
{
if (N==1)
{
rez[0]=1;
rez[1]=1;
}
else if (N==2)
{
rez[0]=1;
rez[1]=2;
}
else
{
nr1[0]=1;
nr2[0]=1;
nr1[1]=1;
nr2[1]=2;
N-=2;
while (N)
{
Add();
Copy(nr2,nr1);
Copy(rez,nr2);
N--;
}
}
}
void Add()
{
register int i;
int t=0;
rez[0]=nr2[0];
for (i=1; i<=rez[0]; i++)
{
t+=(nr1[i]+nr2[i]);
if (t>9)
{
rez[i]=t%10;
t=1;
}
else
{
rez[i]=t;
t=0;
}
}
if (t)
rez[++rez[0]]=t;
}
void Copy(short int *source, short int *destination)
{
register int i;
for (i=1; i<=source[0]; i++)
destination[i]=source[i];
destination[0]=source[0];
i=destination[0]+1;
while (i<=5000 && destination[i])
destination[i++]=0;
}