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
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 . O impartire la 2 e echivalenta cu stergerea ultimei cifre.
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă