思路:
归根结底就是在问n*(n-1)……(n-m+1)能整除几次2。
也就是上述乘积里面能分解出几个2。那么,可以把每个乘数分别判其断能分解出的2的数量,然后加在一起就是乘积能分解出的2的数量。
代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
if(n==0&&m==0)
break;
int k=0,s=1;
for(int i=n-m+1;i<=n;i++){
s*=i;
while(s%2==0){
k++;
s/=2;
}
}
cout<<k<<endl;
}
return 0;
}