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

Cerința
Fie un număr natural n, n < 2^62. Să se afişeze toate numerele naturale mai mici sau egale cu n, cu proprietatea că reprezentarea lor in baza 2 are exact două cifre 1.
Date de intrare
În fişierul de ieşire b2.out se vor afişa în ordine crescătoare numerele cerute, pe o singură linie cu spaţiu între ele.
Restricții și precizări
3 ≤ n < 2^62
URGENT

Răspunsuri la întrebare

Răspuns de costysportiv
0

#include <iostream>

#include <conio.h>

using namespace std;

int main() {

unsigned long long n=0;

char* c_ptr;

c_ptr = (char*) &n;

for (short i = 1; i <= 7; ++i) {

 *c_ptr = 0;

 ++c_ptr;

}

*c_ptr = 32;

unsigned long long aux_n;

int one_counter;

for (unsigned long long k = 3; k < n; ++k) {

 aux_n = k;

 one_counter = 0;

 while (aux_n) {

  if (aux_n % 2 == 1) {

   ++one_counter;

   if (one_counter > 2) {

    break;

   }

  }

  aux_n /= 2;

 }

 if (one_counter == 2) {

  cout << k << "\n";

 }

}

std::cout << "\nPress any key to continue...";

_getch();

return 0;

}

Alte întrebări interesante