约瑟夫问题
#include<iostream>
#include<cstring>
#define N 50
using namespace std;
int circle[N];
int main()
{
int n,m;//n表示总人数,每隔m个人出队一个人
while(cin>>n>>m)
{
int num=0;//num表示当前报的数值
int index=0;//表示一圈人的下表 例如:n=10 0 1 2 3 4 5 6 7 8 10
while(n>0)//只要时队伍内的人数不为零,就一直循环
{
num=num+1-circle[index];
if(num==m)
{
cout<<index+1<<' ';
n--;
circle[index]=1;
num=0;
}
index=(index+1)%m;//表示下表循环
}
}
return 0;
}