描述n个小孩围坐成-圈,并按顺时针编号为1,2… ,从编号为p的小孩顺时针依次报
数,由1报到m,当报到 m时,该小孩从圈中出去,然后下一个再从1报数,当报到m时再出去。如此反复,直至所有的小孩都从圈中出去。请按出去的先后顺序输出小孩的编号。输入每行是用空格分开的三个整数,第-一个是n,第二个是p,第三个是m (0 < m,n <300)。
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int main()
{
int n,p,m;
while(scanf("%d%d%d",&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)
{
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\n",children.front());
}
else
{
printf("%d,",children.front());
}
children.pop();
}
}
return 0;
}