离谱,为啥啊
查看原帖
离谱,为啥啊
752978
Kazuha_feywaye楼主2024/12/28 19:51
#include<bits/stdc++.h>
#define int long long
using namespace std;
int f[10086];
int check(int x,int y)
{
	int z=(x^y),s=0;
	while(z)
	{
		s++;
		z-=(z&-z);
	}
	return s;
}
signed main()
{
	int n,b,d,ans=1,num=1,x=1;
	scanf("%d%d%d",&n,&b,&d);
	f[1]=0;
	cout<<0<<' ';
	while(ans<n)
	{
		bool ff=0;
		for(int i=1;i<=ans;i++)
		{
			int z=check(f[i],x);
			if(z<d)//这里单独定义成z就能过,但写成(check(f[i],x)<d)就是错的
			{
				ff=1;
				break;
			}
		}
		if(ff!=1)
		{
			if(num==10)
			{
				cout<<"\n";
				num=0;
			}
			cout<<x<<' ';
			f[++ans]=x;
			num++;
		}
		x++;
	}
	return 0;
}

求大佬解释哈

2024/12/28 19:51
加载中...