#include <iostream>
#include <list>
using namespace std;
int main() {
int c;
cin >> c;
for (int tc = 0; tc < c; tc++) {
int n, k;
cin >> n >> k;
list<int> army;
for (int i = 1; i <= n; i++) {
army.push_back(i); //데이터 넣기
}
list<int>::iterator iter = army.begin();
while (army.size() > 2) {
int removeNum = *iter; //현재 죽을 병사 번호
for (int i = 0; i < k; i++) {
if (*iter == army.back()) { //마지막 원소면
iter = army.begin(); //리스트의 처음으로
}
else {
++iter;
}
}
army.remove(removeNum);
}
cout << army.front() << " " << army.back() << "\n";
}
return 0;
}
람지
문제
JOSEPHUS
코드
에러메세지
RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow)
질문
iterator가 리스트의 마지막 원소를 가리키고 있다면 처음을 가리키도록 했는데도 오류가 나는 원인을 모르겠습니다. 항상 오류가 나는건 아니고 대부분의 경우 답이 잘 출력되지만 언제는 빈칸이 출력됩니다.
감사합니다.
6년 전