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

Fisierul text bac.txt contine pe prima linie cel mult 1 000 000 de numere naturale cu cel mult 9 cifre fiecare. Sa se scrie un program care citeste valorile din fisier si afiseaza pe ecran pe aceeasi linie cu spatiu intre ele valorile din fisier care sunt puteri ale lui 2.

Răspunsuri la întrebare

Răspuns de andrei750238
2

#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 100...0. O impartire la 2 e echivalenta cu stergerea ultimei cifre.

Alte întrebări interesante