step 1
더보기
메모리 제한이 16mb입니다. 이거는 배열이나 세그 트리 같은 것을 사용하지 않고 풀라는 이야기입니다.
(N, K)-요세푸스 순열의 답을 알고 있다고 해봅시다. (N+1, K)-요세푸스 순열은 무엇일까요?
step 2
더보기
예시에 있는 경우를 생각해 봅시다. 한 사람이 제거될 때 까지 진행한 다음 순서와 숫자를 조금 섞어주면 다음과 같이 됩니다.
(6, 3) 요세푸스 순열의 답은 1입니다. 그럼 이 과정을 반대로 올라간다고 생각하면 (7,3) 요세푸스 순열은 4임을 알 수 있습니다.
(1, K) 요세푸스 순열의 답은 1입니다. 여기서부터 거꾸로 올라가면서 생각하면 쉽게 답을 구할 수 있습니다.
코드
더보기
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<map>
#include<algorithm>
using namespace std;
int main() {
int n, m, i,po=1;
scanf("%d%d", &n, &m);
for (i = 2;i <= n;i++) {
int mm = m%i;
if (mm == 0) mm = i;
if (i - mm >= po) po += mm;
else po -= i - mm;
}
printf("%d", po);
return 0;
}
'PS - 알고리즘' 카테고리의 다른 글
15005 - Collatz Conjecture (0) | 2024.11.04 |
---|---|
13215 - Fish (0) | 2024.10.21 |
23755 - 카드컨트롤 (Hard) (0) | 2024.10.07 |
24520 - Meet In The Middle (0) | 2024.09.30 |
10479 - 따르릉 따르릉 (0) | 2024.09.23 |