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