Informatică, întrebare adresată de CrySky, 8 ani în urmă

Fișierul "Date.in" conține cel mult un milion de numere. Toate numerele sunt puterea lui 2. Se citeste un număr n de la tastatura.
Sa se afișează numărul din fișier care s-ar găsi pe poziția n atunci când valorile din fișier sunt ordonate crescător.
Restricție: puterea trebuie sa fie mai mica sau egal cu 15

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("date.in");

int num, i, fr[16], exp, gasit, indcautat, n, suma,nrcautat=1;

int main()

{

   cin >> n;

   while (f>>num)

   {

      exp=0;

      while (num>1)

      {

          ++exp; num=num/2;

      }

       ++fr[exp];

   }

   for (i=0; i<=15; ++i)

   {

       if (fr[i]>0) suma=suma+fr[i];

       if (suma>=n) { gasit=1; indcautat=i; break; }

   }

   if (!gasit) cout << "nu exista";

   else

   {

       for (i=1; i<=indcautat; ++i)

           nrcautat=nrcautat*2;

       cout << nrcautat;

   }

}

Alte întrebări interesante