題目描述
n個人(n<=100)圍成一圈,從第一個人開始報數,數到m的人出列,再由下一個人重新從1開始報數,數到m的人再出圈,……依次類推,直到所有的人都出圈,請輸出依次出圈人的編號.
輸入格式:
n m
輸出格式:
出圈的編號
說明
m,n≤100
數據較小,直接模擬了,應該可以直接用數學推(不確定),推出第幾個出局的是第幾個人。
#include<cstdio>
using namespace std;
int main() {
int n,m,s=0;
scanf("%d%d",&n,&m);
bool visit[200]= {0};
for(int k=0; k<n; k++) {
for(int i=0; i<m; i++) {
if(++s>n)s=1; //模擬環狀結構
if(visit[s])i--; //跳過出局的人
}
printf("%d ",s); //出局
visit[s]=true;
}
return 0;
}