아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

콜라츠 추측

면접 대비

시간 제한1초메모리 제한128 MB

요약
두 수 A와 B의 콜라츠 수열을 각각 1까지 만들어, 두 수열이 처음으로 만나는 값을 찾고 그 값이 각 수열에서 몇 번째인지 출력한다.
난이도

보통10점 중 5점

유형
시뮬레이션, 해시맵, 수학, 구현
정답자
아직 제출이 없습니다

문제

콜라츠 추측은 흥미로운 현상이다. 규칙은 단순해 보이지만 아직 수학적으로 증명되지 않은 문제이다. 이 문제에서는 콜라츠 추측이 항상 참이라고 가정한다.

콜라츠 추측은 다음과 같다. 양의 정수로 이루어진 수열 xix_i를 아래 규칙으로 만든다.

  • xix_i가 짝수이면 xi+1=xi/2x_{i+1} = x_i / 2
  • xix_i가 홀수이면 xi+1=3×xi+1x_{i+1} = 3 \times x_i + 1

콜라츠 추측은 이렇게 만든 수열이 언젠가 반드시 1에 도달한다는 것이다. 과학자들은 컴퓨터를 이용해 첫 항이 2582^{58}보다 작으면 이 추측이 참임을 확인했다.

이제 문제를 살펴보자.

양의 정수 두 개 AA와 BB가 주어진다. 두 수 각각에 대해 위 규칙으로 콜라츠 수열을 만든다. 두 수열을 앞에서부터 비교했을 때 두 수열에 공통으로 처음 나타나는 값 CC를 찾고, 그 값이 각 수열에서 몇 번째 위치에 있는지 구한다. 위치는 첫 항을 0으로 세어 계산한다.

편의를 위해 수열은 값이 1이 되면 더 이상 진행하지 않는다. (1 이후에는 1, 4, 2, 1, 4, 2, …가 끝없이 반복되기 때문이다.)

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 두 정수 AA와 BB로 구성된다 (1≤A,B≤1,000,0001 \le A, B \le 1{,}000{,}000). 입력의 마지막 줄은 두 개의 0으로 이루어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 다음 형식의 문장을 한 줄에 출력한다.

A needs SA steps, B needs SB steps, they meet at C

여기서 CC는 AA의 수열과 BB의 수열에 공통으로 처음 나타나는 값이고, SAS_A와 SBS_B는 각각 AA의 수열과 BB의 수열에서 CC가 처음 나타나는 위치이다. 위치는 첫 항을 0으로 세어 계산한다.

예제1

  1. 예제 1

    입력
    7 8
    27 30
    0 0
    
    예상 출력
    7 needs 13 steps, 8 needs 0 steps, they meet at 8
    27 needs 95 steps, 30 needs 2 steps, they meet at 46