题意:算出区间内二进制中0的个数大于等于1的个数的数字有多少个 /* 本来以为用数位DP搞,但是组合数更简单. 我们设n的二进制长度为len. ①:先考虑长度小于len的数字. 这里以数字22为例,二进制拆成10110,len=5. len=1时,只能是1(题目要求是正数): len=2时,第一位是1,剩下的1位,至少有1个0,ans+=C(1,1); -- len=k时,第一位是1,剩下的len-k位,如果至少要有p个0,那么ans+=C(len-k,p)+...+C(len-k,len-k)…