这道题如果你的思维很局限,可以使用queue,先创建一个队列,正常输入,在queue中进行运算,代码如下:
#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int a,n,cnt;//cnt代表位置
int main(){
freopen("ysf.in","r",stdin);
freopen("ysf.out","w",stdout);
cin>>a>>n;
for(int i=1;i<=a;i++)
q.push(i);//q.push()输入
while(!q.empty()){//如果为空退出循环
cnt++;
if(cnt==n){//如果到了出圈的人
cout<<q.front()<<" ";//q.front()出圈
q.pop();//删除出圈的人,q.pop()删除
cnt=0;//重新计数
}
else { //如果这人不用出圈,重新刷新一下
int x = q.front();
q.pop();
q.push(x);
}
}
return 0;
}