A41127. 约瑟夫问题
填空题
容易
知识点
题目描述
约瑟夫问题
题目描述
N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。
输入格式
输入N和M
输出格式
输出一行,依次出圈的人的编号
样例输入
8 5样例输出
5 2 8 7 1 4 6 3参考答案
#include<stdio.h>
int main() {
int n, m, i, j = 1, count = 0;
int a[10001], b[10001];
scanf("%d%d", &n, &m);
for (i = 1; i <= n; i++) {
a[i] = i;
}
int x = n;
while (x >= 1) {
for (i = 1; i <= n; i++) {
if (a[i] != 0) {
count++;
}
if (count == m) {
b[j] = a[i];
a[i] = 0;
count = 0;
j++;
x--;
}
}
}
for (j = 1; j <= n; j++) {
printf("%d ", b[j]);
}
return 0;
}
上一题
下一题