任意一个整数左移一位后,1的个数不变,而且扩大一倍,变为偶数(末位必定为0),因此偶数中1的个数等于偶数的一半的数中1的个数;
对于奇数而言,末位必定为1,相当于前一位的偶数在末位添加一个'1'
vector<int> countBits(int num) {
vector<int> table;
table.push_back(0);
for(int i=1;i<=num;i++)
{
if(i%2==0)
table.push_back(table[i/2]);
else
table.push_back(1+table[i/2]);
}
return table;
}