例题:追梦算法网#P1075. 约瑟夫的杀人计划
上代码
#include<bits/stdc++.h>//运用到了队列
using namespace std;
int n,k,cnt=1,num=1;//num用作来报数,cnt用于记录队列里面还有几个数字
int a[1005];
queue<int>q;
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
q.push(i);
}
while(cnt<n){//最后一个要单独提出来,因为num!=k的条件不成立
if(num!=k){
int temp=q.front();
q.pop();
q.push(temp);
num++;
}else{
a[q.front()]=cnt;
cnt++;
q.pop();
num=1;
}
}
a[q.front()]=cnt;
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
}
return 0;
}