考虑输入的数其二进制表示中"1"的奇偶性.
不妨来看2个例子(下列数为二进制表示):
我们发现,前一个例子中,在翻转100000的过程中,会出现100100这一步(即相当于翻转了第2位)(感兴趣的朋友可以认真推推我们是怎么预处理2次幂答案,怎么有那个递推式的)
而第二个例子:
在翻转1000000000的过程中,会出现1000100000这一步,而1000100000这一步则相当于1000100100翻转了第2位.
所以答案为 翻转第2位的答案 + 翻转9位的答案 - 翻转第5位的答案.
一般的,我们记录输入数二进制表示中1的个数.