摘要:
题目大意是:给你两个数n和m,计算从n到m的所有数的二进制中,0的个数大于1的个数的数的个数。这题用组合数学比较简单,不过要小心,很容易超时的,我就悲哀的RE了两次。对于一个长度为Len的二进制(最高位为1),如何求出他的RoundNumbers呢(假设为用R(len)来表达),分为奇数和偶数两种情况1、奇数情况:在Len=2k+1的情况下,最高位为1,剩下2k位,至少需要k+1为0用C(m,n)表示排列组合数:从m个位置选出n个位置的方法R(len)=C(2k,k+1)+C(2k,k+2)+...+C(2k,2k).由于 A:C(2k,0)+C(2k,1)+...+C(2k,2k)=2^(2 阅读全文