C語言陣列方法處理圍圈報數
阿新 • • 發佈:2019-02-07
有m個人圍成一圈,開始報數,報道n,退出,問最後剩下的是幾號。(從1號開始)
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[100];
int m, n;
int cnt=0;//統計出局人數
int k=0;
int i;
scanf("%d%d", &m,&n);
if (m>100) {
return -1;
}
for (i=0; i<m; i++) {
a[i]=i+1;
}
i=0;
while (cnt<m-1) {
if (a[i]) {//計數
k++;
}
if (k==n) {//統計出局人數
k=0;
a[i]=0;
cnt++;
}
i++;
if (i==m) {//處理邊界
i=0;
}
}
i=0;
while (!a[i++]);
printf("%d\n", a[i-1]);
return 0;
}