Saturday, June 6, 2015

UVa 151 - Power Crisis

// UVa 151 - Power Crisis
#include <iostream>
#include <vector>
using namespace std;

int josephus(int n, int m) {
	vector<int> v;
	for (int i = 1; i <= n; i++)
		v.push_back(i);
	int now = 0;
	while (v.size() > 1) {
		if (v[now] == 13)
			return 0;
		v.erase(v.begin() + now);
		now += m - 1;
		if (now >= v.size())
			now = now % v.size();
	}
	return v[0];
}

int main() {
	int n;
	cin >> n;
	for (; n; cin >> n) {
		if (n == 13)
			cout << 1 << endl;
		else {
			int sol = 0;
			for (int i = 2; true; i++) {
				if (josephus(n, i) == 13) {
					sol = i;
					break;
				}
			}
			cout << sol << endl;
		}
	}

	return 0;
}

No comments:

Post a Comment