求组合数 转化为二进制后末尾0的个数
#include<stdio.h>int add(int x)
{
int sum=0;
while(x%2==0&&x!=0)
{sum++;x=x/2;}
return sum;
}
int main()
{
int i,t,m,n,a[1002]={0};
for(i=1;i<1002;i++)
{
a[i]=a[i-1]+add(i);
}
scanf("%d",&t);
//printf("%d %d",a[1000],a[500]);
while(t--)
{
scanf("%d%d",&m,&n);
printf("%d\n",a[m]-a[m-n]-a[n]);
}
return 0;
}
因为是新手代码不懂,也不知查什么资料?请大神指点一下或告诉一下查一些什么资料??