fbpx

Problema #2285 – b2 – Rezolvari PBInfo

de Mihai-Alexandru

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

  • 3n < 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

S-ar putea sa iti placa