👤

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ă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!


Go Studies: Alte intrebari