玄关求条
查看原帖
玄关求条
778970
fanxing1124楼主2024/8/24 23:02
#include<bits/stdc++.h>
#define int long long
using namespace std;
int c[110][110],n,m;
int dfs(int cnt,int m)
{
	if(cnt==0)
	{
		if(m==1||m==0)return 1;
		return 0;
	}
	if(!(n&(1<<cnt)))return dfs(cnt-1,m);
	return c[cnt][m]+dfs(cnt-1,m-1);
}
signed main()
{
	cin>>n>>m;
	int cnt=log2(n);
	for(int i=1;i<=cnt+1;i++)
	{
		c[i][1]=i;
		for(int j=2;j<=i;j++)
		{
			c[i][j]=(i-j+1)*c[i][j-1]/j;
		}
	}
	cout<<dfs(cnt,m)<<endl;
	return 0;
}
2024/8/24 23:02
加载中...