The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
The 12th term, F12, is the first term to contain three digits.
What is the first term in the Fibonacci sequence to contain 1000 digits?
My Solution
#include <stdio.h>
#define SIZE 1000
void vetSum (int vet1[],int vet2[]);
int main(){
int n,i;
int n1[SIZE],n2[SIZE],temp[SIZE];
n1[0]=1;
n2[0]=1;
for (i=1;i<SIZE;i++){
n1[i]=0;
n2[i]=0;
}
n = 4782;
while (n-2>0){
for (i=0;i<SIZE;i++)
temp[i]=n2[i];
vetSum(n1,n2);
for (i=0;i<SIZE;i++)
n1[i]=temp[i];
n--;
}
for (i=999;i>=0;i--)
printf("%d",n2[i]);
printf("\n");
return 0;
}
void vetSum (int vet1[],int vet2[]){
int i,aux,fica;
int vai=0;
for (i=0;i<SIZE;i++){
aux=vet2[i]+vet1[i]+vai;
vai = 0;
if (aux<10)
vet2[i]=aux;
else {
fica = aux % 10;
vai = 1;
vet2[i] = fica;
}
}
return;
}