void init()
{
    f[
0][0]=1;
    
int i,j;
    
for(i=1;i<=31;i++)
    {
        f[i][
0]=f[i-1][0];
        
for(j=1;j<=i;j++)
            f[i][j]
=f[i-1][j]+f[i-1][j-1];
    }
}
int calc(int x,int k)//计算[0x]里含有k个1的数的个数
{
    
int i;
    
int tol=0,ans=0;
    
for(i=31;i>=0;i--)
    {
        
if(x&(1<<i))
        {
            x
^=(1<<i);
            ans
+=f[i][k-tol];
            tol
++;
            
if(tol>k)
                
break;
        }
            
    }
    
if(tol+x==k)
        ans
++;
    
return ans;
}