求助随机化64
查看原帖
求助随机化64
209916
youkasgs_wyb楼主2024/10/15 18:40
#include<bits/stdc++.h>
using namespace std;
int a[1000005],n,m,t,f,g,s,l,r;
int main(){
	srand(19491001);
	srand(rand());
	srand(rand());
	cin>>t;
	while(t--)
	{
		f=0;
		s=1;
		cin>>n>>m;
		g=1;
		while(g<n)
		{
			g=g*2;
		}
		g--;
		for(int i=1;i<=n;i++)
		{
			a[i]=i;
		}
		for(int i=2;i<=m;i++)
		{
			s^=i;
		}
		for(int i=1;i<=400000;i++)
		{
			if(s==g)
			{
				f=1;
				for(int j=1;j<=m;j++)
				{
					cout<<a[j]<<" ";
				}
				cout<<endl;
				break;
			}
			if(n==m)
			{
				break;
			}
			l=rand()%m+1;
			r=rand()%(n-m)+m+1;
			s^=a[l];
			s^=a[r];
			swap(a[l],a[r]);
		}
		if(f==0)
		{
			cout<<"-1\n";
		}		
	}
	return 0;
}
2024/10/15 18:40
加载中...