这题用队列解决非常方便,且很好理解,详情请看下方代码以及注释。
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int n,outnum,nownum = 1; //隔outnum个数出队一次,nownum现在隔的数字个数
queue<int>q;
cin>>n>>outnum;
for(int i=1;i<=n;i++)
q.push(i); //元素入队
while(!q.empty()) //若队非空
{
if(nownum == outnum) //若隔了这么多数了就让这个数出队
{
cout << q.front() << " "; //输出一下
q.pop(); //出队了 删除这个数
nownum = 1; //重新开始计数
}
else
{
nownum++; //没达到就一直加
q.push(q.front()); //因为我们把出队的放在队首,所以不满足的我们把它移到队尾
q.pop();
}
}
cout << endl;
return 0;
}