Pagini recente » Cod sursa (job #2331778) | Cod sursa (job #524217) | Cod sursa (job #299341) | Cod sursa (job #1549218) | Cod sursa (job #2208666)
#include <stdio.h>
#include <stdlib.h>
#define max(a, b) (a>b)?a:b
void Fib(int X[220], int Y[220], int Z[220]){
int i, r=0;
Z[0]=max(X[0], Y[0]);
for(i=1; i<=Z[0]; i++){
Z[i]=X[i]+Y[i]+r;
r=Z[i]/10;
Z[i]%=10;
}
Z[Z[0]+1]=r;
if(r)Z[0]++;
}
int A[220], B[220], C[220], k;
int main()
{
FILE *fin; FILE *fout;
fin = fopen("nunta.in", "r");
fout = fopen("nunta.out", "w");
int N;
fscanf(fin, "%d", &N);
if(N==0){
fprintf(fout, "%d", 1);
return 0;
}
if(N<=3){
fprintf(fout, "%d", N);
return 0;
}
A[0]=B[0]=1; A[1]=2; B[1]=3;
for(k=1; k<=N-3; k++){
if(k%3==1)Fib(A, B, C);
else if (k%3==2)Fib(B, C, A);
else Fib(C, A, B);
}
if((N-3)%3==1) for(k=C[0]; k>=1; k--) fprintf(fout, "%d", C[k]);
else if((N-3)%3==2) for(k=A[0]; k>=1; k--) fprintf(fout, "%d", A[k]);
else for(k=B[0]; k>=1; k--) fprintf(fout, "%d", B[k]);
return 0;
}