```
class Solution {
public:
vector<int> countBits(int num) {
vector<int> res(num+1, 0);
for (int i = 1;i <= num;i++){
if((i&1) == 0)
res[i] = res[i/2];
else
res[i] = res[i/2]+1;
}
return res;
}
};
```

As we all know an even number's last digit must be a 0, so we can ignore this zero and right shift it with one place and get the answer;For odd numbers, the last digit is 1, and we can do the same thing and add 1 to the answer;