Să se afişeze toate numerele în baza 2 care au k cifre şi sunt divizibile cu 2n. k şi n se introduc de la tastatură. (Indicație. Un număr reprezentat în baza 2 este divizibil cu 2n dacă ultimele n cifre ale reprezentării sunt 0). 14
#include <iostream>
using namespace std;
int main() {
int k, n;
cout << „Introduceti k si n: „;
cin >> k >> n;
int num = 0;
for (int i = 1; i <= k; i++) {
num = num * 2; // shiftam numarul la stanga, adaugand un bit de 0 la dreapta
if (i <= n) {
num = num + 0; // ultimele n cifre sunt 0
} else {
num = num + (rand() % 2); // generam aleatoriu o cifra 0 sau 1
}
}
while (num % (2 * n) == 0) {
cout << num << endl; // afisam numarul daca este divizibil cu 2n
num = num + (1 << n); // adaugam 2^n pentru a obtine urmatorul numar cu aceleasi cifre 0
}
return 0;
}
Acest program generează un număr inițial cu k cifre în baza 2, având ultimele n cifre egale cu 0. Apoi, începând de la acest număr, verificăm dacă este divizibil cu 2n și afișăm numărul dacă este cazul. Pentru a genera următorul număr cu aceleași cifre 0, adăugăm 2^n la numărul curent.