Răspuns :
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautafibo.in");
ofstream g("cautafibo.out");
unsigned long long num, i, contor, v[51];
int div_imp (int p, int q)
{
int mij;
if (q<p)
return 0;
else
{
mij=(p+q)/2;
if(v[mij]==num)
return 1;
else
if(num<v[mij])
return div_imp (p, mij-1);
else
return div_imp (mij+1,q);
}
}
int main()
{
v[0]=1; v[1]=1;
for (i=2; i<=50; ++i)
{
v[i]=v[i-1]+v[i-2];
}
while (f >> num)
{
if (div_imp(0,50)) ++contor;
}
g << contor;
}
Explicație:
am creat vectorul cu numere fibo, si pren cautare binara verific daca numarul din fisier este in vector
#include <fstream>
using namespace std;
unsigned long long int vec[60];
int cb(unsigned long long int x){
int st=0,dr=59;
while(st<=dr){
int mid = (st+dr)/2;
if(vec[mid] < x)
st = mid+1;
else if (vec[mid] > x)
dr = mid + 1;
else return mid;
}
return -1;
}
int main(){
unsigned long long int x;
ifstream fin("cautafibo.in");
ofatream fout("cautafibo.out");
int cnt = 0;
unsigned long long int f1 = 1, f2 = 1, f3=0;
v[0]=1;
for(int i = 1; f3 < 10000000000ULL; i++){
f3 = f1 + f2;
f1 = f2;
f2 = f3;
vec[i]=f3;
}
while((fin>>x)){
int ind = cb(x);
if(ind !=-1)
cnt++;
}
fout << cnt;
fout.close();
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!