Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream f("bac.txt");
- int n, x, p[10], px, i, ok;
- int main()
- { f>>n;
- while(f>>x)
- { px = 0;
- while(x!=0)
- { x = x/2;
- px++; // numara de cate ori se imparte numarul citit la 2
- }
- p[px-1]++; // la final suma p[1]+p[2]+...+p[] va fi egala cu numarul de numere din fisier
- // facem p[px-1] ca sa nu mai pun un if inainte de while
- // daca nu-l pun o sa fie 2^1 = 0 ceea ce nu e bine
- }
- ok=1;
- // pentru exemplul dat, p[9] arata asa: [1, 0, 0, 0, 1, 3, 1, 2, 0, 0 ]
- // pe vectorul asta incepem de la coada si facem n-p[i] pana ajungem la n=0 sau n negativ
- // in cazul asta inseamna ca i este puterea numarului de pe pozitia n
- for(i=9;i>=0 && ok!=0;i--)
- { n = n-p[i];
- if(n<=0)
- { ok = 0;
- x = 1;
- while(i)
- { x = x*2;
- i--;
- }
- cout<<x;
- }
- }
- if(n>0) cout<<"nu exista";
- f.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement