Napisz program, który przyjmuje od użytkownika liczbę całkowitą n (z zakresu \(<1; 2*10^4>\)). Dla podanej liczby n szuka takiego ciągu zgodnego z zasadami ciągu Fibonacciego, że n jest ostatnim elementem wygenerowanego ciągu, a wygenerowany ciąg jest najdłuższym z możliwych. Jeżeli istnieje więcej niż jedno rozwiązanie o maksymalnej długości program wybiera to o najmniejszym pierwszym elemencie ciągu. Program powinien wyświetlić dwie liczby rozpoczynające szukany ciąg.
Mój problem polega na tym że liczba n wpisywana przez użytkownika przyjmowana jest jako wartość tab[0] i tab[1], a powinna być ostatnia w tym ciągu.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i = 0;
int tab[20] = {0};
int n = 0;
int j = 0;
printf("Podaj liczbe: ");
if(scanf("%d", &n) != 1)
{
printf("Incorrect Input");
return 1;
}
if(n > 1024 || n < 1)
{
printf("Incorrect input data");
return 2;
}
for(i = 2; i < 20; i++)
{
for(j = 1; j <= n; j++)
{
tab[0] = j;
tab[1] = j;
tab[i] = tab[i-1] + tab[i-2];
if(tab[i] == n)
{
printf("%d %d", tab[2], tab[3]);
printf("%d", j); //sprawdzenie wartości tab[0] i tab[1]
break;
}
}
}
for(i = 0; i < 17; i++) //sprawdzenie ciągu jaki zostanie wypisany
{
printf("%d ", tab[i]);
}
return 0;
}