Files
exercises/pojcs101_M02746_josephus_problem_simulation.cpp
2026-08-03 15:29:43 +08:00

35 lines
896 B
C++

#include <iostream>
using namespace std;
constexpr size_t MAX_N = 305;
size_t simulate_monkeys(const size_t monkeys_count, const int m) {
bool monkeys[MAX_N] = {false};
int died_monkeys_count = 0;
for (size_t i = 0, current_num = 0;;
i = (i + 1) % monkeys_count,
current_num = (current_num + 1) % m) {
while (monkeys[i]) { i = (i + 1) % monkeys_count; }
if (current_num == m - 1) { monkeys[i] = true, died_monkeys_count++; }
if (died_monkeys_count == monkeys_count - 1) { break; }
}
for (int i = 0; i < monkeys_count; i++) {
if (!monkeys[i]) { return i; }
}
throw logic_error("???");
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int monkeys_count, m;
while (cin >> monkeys_count >> m && m) {
cout << simulate_monkeys(monkeys_count, m) + 1 << endl;
}
return 0;
}