Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream f("bac.txt");
  5. int n, x, p[10], px, i, ok;
  6. int main()
  7. {   f>>n;
  8.     while(f>>x)
  9.     {   px = 0;
  10.         while(x!=0)
  11.         {   x = x/2;
  12.             px++;   // numara de cate ori se imparte numarul citit la 2
  13.         }
  14.         p[px-1]++;  // la final suma p[1]+p[2]+...+p[] va fi egala cu numarul de numere din fisier
  15.                     // facem p[px-1] ca sa nu mai pun un if inainte de while
  16.                     // daca nu-l pun o sa fie 2^1 = 0 ceea ce nu e bine
  17.     }
  18.     ok=1;
  19.     // pentru exemplul dat, p[9] arata asa: [1, 0, 0, 0, 1, 3, 1, 2, 0, 0 ]
  20.     // pe vectorul asta incepem de la coada si facem n-p[i] pana ajungem la n=0 sau n negativ
  21.     // in cazul asta inseamna ca i este puterea numarului de pe pozitia n
  22.     for(i=9;i>=0 && ok!=0;i--)
  23.     {   n = n-p[i];
  24.         if(n<=0)
  25.         {   ok = 0;
  26.             x = 1;
  27.             while(i)
  28.             {   x = x*2;
  29.                 i--;
  30.             }
  31.             cout<<x;
  32.         }
  33.     }
  34.     if(n>0) cout<<"nu exista";
  35.     f.close();
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement