Cześć
chodzi mi o to że na wejściu mam podany
a) zakres (od 1 do n)
b) ilość jedynek w binarnej reprezentacji liczny
np
a) 15 <1. 15>
b) 3
11 to binarnie 1111
minimalna liczba z trzema jedynkami to 2^3-1 czyli 7 czyli binarnie 0111
a kolejno liczby z 3 jedynkami to
0111 = 7
1011 = 11
1101 = 13
1110 = 14
no i teraz jak to sprytnie zrobić
ja zrobiłem to tak
for(int i = 1; i <=n; i++)
{
std::bitset<sizeof(size_t) * CHAR_BIT> b(i);
if(b.count() == ilosc)
cout<<i;
}
ale czy da się to zrobić lepiej, szybciej, wydajniej, sprytniej
czyli że zaczynam od 2^n-1 a potem coś dodaję coś przesuwam i mam kolejne liczby