题解 | 约瑟夫环
约瑟夫环
https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322
#include <stdio.h>
int main() {
int n = 0;
int k = 0;
int m = 0;
int count = 0;
scanf("%d %d %d", &n, &k, &m);
int arr[100] = { 0 };
for (int i = 0; i < n; i++) {
arr[i] = 1;
}
while (n - 1) {
while (arr[k % 100] == 0) {
k++;
}
if (arr[k % 100] == 1) {
count++;
k++;
}
if (count == m) {
arr[(k - 1) % 100] = 0;
n--;
count = 0;
}
}
for (int i = 0; i < 100; i++) {
if (arr[i] == 1) {
printf("%d", i);
break;
}
}
return 0;
}
一个简单的循环数组
查看14道真题和解析