//p(n, m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)! (规定0!=1).
//归根结底就是在问n*(n-1)*……*(n-m+1)能整除几次2。
//也就是上述乘积里面能分解出几个2。
//那么,可以把每个乘数分别判其断能分解出的2的数量,然后加在一起就是乘积能分解出的2的数量。
#include<stdio.h>
#define maxsize 1000
int main() {
int n, m, temp;
while (scanf("%d%d", &n, &m) != EOF) {
if (n == 0)
return 0;
int count = 0;
for (int i = n; i >= n - m + 1; i--) {
temp = i;
while (temp % 2 ==
0) { //每个乘数:判其断能分解出的2的数量 16分解出4个2
count++;
temp = temp / 2;
}
}
printf("%d\n", count);
}
return 0;
}



京公网安备 11010502036488号