347
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
Fişierul de intrare b2.in conţine pe prima linie numărul natural n.
Date de ieșire
Î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
Exemplu
b2.in
20
b2.out
3 5 6 9 10 12 17 18 20
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("b2.in");
ofstream fout ("b2.out");
int main ()
{
int nc=0;
unsigned long long int x,n;
fin >> n;
x=n;
while(x)
{
x/=2;
nc++;
}
for (int i = 1; i <nc; ++i)
for(int j = 0 ; j <i; ++j)
{
x=(1ull<<i)+(1ull<<j);
if (x<=n) fout << x << ' ';
}
return 0;
}
Comentarii