#include<cstdio>
#include<vector>
using namespace std;
main(void){
vector<int> list;
int n,count=0,m,sum;
scanf("%d",&n);
sum=n;
int a[n];
for(int i=0;i<n;i++){
a[i]=i+1;
}
scanf("%d",&m);
for(int i=1;i<=n;i++){
count++;
if(count==m){
list.push_back(a[i-1]);
printf("%d\n",a[i-1]);
for(int j=i-1;j<n;j++){
a[j]=a[j+1];
}
n--;
if(i==n){
i=0;
}
count=1;
}
if(i==n){
i=0;
}
if(list.size()==sum-1){
break;
}
}
printf("剩的:%d",a[0]);
}
仅供参考
#include<iostream>
using namespace std;
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
int max=13,m;
scanf("%d",&m);
int pre,now;
now=0;
for(int i=0;i<max-1;i++)
{
for(int j=0;j<m-1;j++)
{
pre=now;
now=(now+1)%max;
}
if(a[now]!=-1)
{
cout<<"出列的人是"<<a[now]<<endl;
a[now]=-1;
}
now=(now+1)%max;
}
}