OpenJudge 2746 조세 프 문제 C + +

4099 단어 open
링크 주소: http://bailian.openjudge.cn/practice/2746
제목:
총 시간 제한:
1000ms
메모리 제한:
65536kB
묘사 하 다.
조세 프 문제: n 마리 의 원숭이 가 있 습 니 다. 시계 방향 으로 한 바퀴 돌 며 대왕 (번 호 는 1 부터 n 까지) 을 고 르 고 1 번 부터 번 호 를 매기 기 시 작 했 습 니 다. m 까지 세 고 m 의 원숭이 가 권 밖으로 나 갈 때 까지 세 었 습 니 다. 나머지 원숭이 는 1 부터 번 호 를 알 렸 습 니 다.이렇게 우리 안에 원숭이 한 마리 만 남 았 을 때 이 원숭이 가 원숭이 왕 이 었 다. n, m 를 입력 한 후에 마지막 원숭이 왕 의 번 호 를 출력 했다.
입력
각 줄 은 빈 칸 으로 나 누 어 진 두 정수 이 고, 첫 번 째 는 n 이 며, 두 번 째 는 m (0 < m, n < = 300) 이다.마지막 줄 은:
0 0
출력
각 줄 의 입력 데이터 (마지막 줄 제외) 에 대해 출력 데이터 도 한 줄, 즉 마지막 원숭이 왕 의 번호 입 니 다.
샘플 입력
6 2

12 4

8 3

0 0

샘플 출력
5

1

7

생각:
아 날로 그 문 제 는 vector 로 저장 합 니 다. 결 과 를 수 동 으로 계산 하여 방향 을 찾 은 다음 코드 를 작성 할 수 있 습 니 다.
코드:
 1 #include <iostream>

 2 #include <vector>

 3 using namespace std;

 4 

 5 int main()

 6 {

 7     int n,m;

 8     cin>>n>>m;

 9     while(n!=0)

10     {

11         vector<int> v;

12         for(vector<int>::size_type i = 0; i != n; ++i)

13         {

14             v.push_back(i+1);

15         }

16         int k = 0;

17         while((v.size()-1) != 0 )

18         {

19             k = (k + m - 1) % v.size();

20             v.erase(v.begin() + k);

21 

22         }

23         cout<<v[0]<<endl;

24         cin>>n>>m;

25     }

26     return 0;

27 }

좋은 웹페이지 즐겨찾기