#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
int T=0;
cin>>T; //输入T
while(0!=T--)
{
int n=0,m=0;
cin>>n>>m; //输入n,m
vector<int> arr;
int size=0; //用size存储当前剩余人数
int flag=0; //用flag记录上一个数到m的人
for(int iLoop=0;iLoop<2*n;iLoop++)
arr.push_back(iLoop+1); //将1~2n的序号存入容器
size=arr.size();
for(int iLoop=0;size>n;iLoop++) //当剩余人数为n时结束
{
//数到队尾后,接着从队首开始数
if(iLoop==size)
{
iLoop=0;
flag-=size;
}
//从flag位置的人开始,第m个人出列,并用flag记录这个人
if((iLoop-flag+1)==m)
{
flag=iLoop;
arr.erase(arr.begin()+iLoop); //出列操作
size--;
}
}
for(int iLoop=0;iLoop<n;iLoop++) //输出地球人的序号
{
cout<<arr[iLoop]<<" ";
}
}
return 0;
}
追问实现不了。。。
追答我这里本地测试没有问题,请问你实现不了是什么原因?或者什么现象?
追问
输入格式这样的。。。
追答在出队操作的最后加一句iLoop--;就可以了,设计的时候没考虑m=1的情况。
追问OK!能加你好友麽。。。新手,刚接触ACM。。。