问题等价于n(n-1)*……(n-m+1)上述乘积里面能分解出几个2。
乘积能分解出的2的数量=每个乘数分别判其断能分解出的2的数量之和

#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 10000;
int main(){
    int n, m, cnt, sum;
    while(~scanf("%d %d", &n, &m) && n && m){
        sum = 0;
        for(int i = n - m + 1; i <= n; i++){
            cnt = 0;
            int t = i;
            while((t & 1) == 0){
                t >>= 1;
                cnt++;
            }
            sum += cnt;
        }
        printf("%d\n", sum);
    }
    return 0;
}