感觉思路没问题,求DALAO改改
#include<iostream>
#include<cstring>
#include<map>
#include<vector>
using namespace std;
int t,n,p;
bool vis[100005];
int mod[100005];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>p;
map<int,int> m;
vector<int> a;
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
mod[i]=i%p;
if(mod[i]==0)
{
cout<<i<<' ';
vis[i]=1;
}
else if(m[p-mod[i]]!=0)
{
vis[i]=1;
vis[m[p-mod[i]]]=1;
a.push_back(m[p-mod[i]]);
m[p-mod[i]]=0;
a.push_back(i);
}
else m[mod[i]]=i;
}
for(int i=0;i<a.size();i++) cout<<a[i]<<' ';
for(int i=1;i<=n;i++)
if(!vis[i]) cout<<i<<' ';
cout<<'\n';
}
return 0;
}