n个小孩按1-n次序围成一圈,从编号为p的小孩开始报数,由1报到m,报到m时这名小孩从圈中出去,然后下一名小孩再从1开始报,报到m时再出去。直到所有小孩出去,输出先后出去的小孩的编号
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n,p,m;
while (scanf("%d%d%d",&n,&p,&m)){ //n个小孩从编号p开始报数,报到m出去
if(n==0&&p==0&&m==0) break;
queue<int>children;
for(int i=1;i<=n;i++){
children.push(i);
}
for(int i=1;i<p;i++){ //使p号在队首
children.push(children.front());
children.pop();
}
while(!children.empty()){
for(int i=1;i<m;i++){
children.push(children.front());
children.pop();
}
if(children.size()==1) printf("%d",children.front());
else printf("%d,",children.front());
children.pop();
}
}
return 0;
}