Programming/Algorithm

[Algorithm] C++ 공주 구하기(조세퍼스)

100winone 2019. 12. 23. 18:03

입력설명

첫 줄에 자연수 N(5<=N<=1,000)과 K(2<=K<=9)가 주어진다.


출력설명

첫 줄에 마지막 남은 왕자의 번호를 출력합니다

 

입력예제

8 3 

 

출력예제

7

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<algorithm>
#include<vector>

using namespace std;

int main() {
	int n, k, pos = 0, bp = 0, cnt = 0, i;
	scanf("%d %d", &n, &k);
	vector<int> prince(n + 1);
	while (1) {
		pos++;
		if (pos > n) pos = 1;
		if (prince[pos] == 0) {
			cnt++;
			if (cnt == k) {
				prince[pos] = 1;
				cnt = 0;
				bp++;
			}
		}
		if (bp == n - 1) break;
	}
	for (i = 1; i <= n; i++) {
		if (prince[i] == 0) {
			printf("%d\n", i);
			break;
		}
	}
	return 0;
}