#include <iostream>
#include <vector>
using namespace std;
int bitCount(unsigned int u)
{
unsigned int uCount;
uCount = u - ((u >> 1) & 033333333333) - ((u >> 2) & 011111111111);
return ((uCount + (uCount >> 3)) & 030707070707) % 63;
}
int main() {
int n;
cin >> n;
int sum = 0;
int i=0;
vector<int> result;
while (sum < n)
{
i++;
sum += bitCount(i);
}
while (n > 0)
{
sum -= bitCount(i);
if (sum < n)
{
result.push_back(i);
n -= bitCount(i);
}
i--;
}
cout << result.size() << endl;
for (int j=0; j<result.size()-1; j++)
cout << result[j] << " ";
cout << result[result.size()-1] << " ";
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <iostream> #include <vector> using namespace std; int bitCount(unsigned int u) { unsigned int uCount; uCount = u - ((u >> 1) & 033333333333) - ((u >> 2) & 011111111111); return ((uCount + (uCount >> 3)) & 030707070707) % 63; } int main() { int n; cin >> n; int sum = 0; int i=0; vector<int> result; while (sum < n) { i++; sum += bitCount(i); } while (n > 0) { sum -= bitCount(i); if (sum < n) { result.push_back(i); n -= bitCount(i); } i--; } cout << result.size() << endl; for (int j=0; j<result.size()-1; j++) cout << result[j] << " "; cout << result[result.size()-1] << " "; } |
English