Răspuns :
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("bac.txt");
int curent, copie;
//Citeste pe rand numerele din fisier
while (fin >> curent) {
//Creaza o copie a numarului curent
copie = curent;
//Cat timp numarul e par imparte-l la 2
while (curent % 2 == 0)
curent /= 2;
//Daca am ajuns la 1 atunci numarul e putere a lui 2, afiseaza copia
if (curent == 1)
cout << copie << " ";
}
}
â–º Explicatie :
Daca un numar este putere a lui 2 atunci impartindu-l repetat la 2 cat timp este par putem ajunge la 1. De ce ?
Daca un numar este putere a lui 2 atunci reprezentarea sa binara e de forma [tex]100...0[/tex]. O impartire la 2 e echivalenta cu stergerea ultimei cifre.
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Ne vedem curând și nu uitați să ne adăugați la marcaje!