PC/UVa ID : 110101/100, 인기도 : A, 성공률 : 낮음, 레벨 : 1
반복 사이클의 길이를 구하는 문제이다. 반복 사이클의 길이는 어떤 정수 n 이 있을 때, n으로 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자 n 이 1 이 될 때까지 같은 작업을 계속 반복한다. 이 반복이 1번당 길이 1 이라고 친다.
예를 들어 n == 22 라면, 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 가 만들어 지고, 16 사이클로 길이가 나온다.
입력
정수 두개( i, j )를 받는다. 이 두 정수는 1 ~ 1,000,000 사이의 숫자여야 한다. 1 ~ 1,000,000 까지의 수자는 모두 n == 1 로 만들어 진다고 하는데, 그 원리는 아직 증명되지 못했다고 한다.
출력
i, j 를 우선 출력하고, 이 사이의 숫자 중 가장 긴 사이클의 길이를 출력 한다.
예)
입력 : 1 10
출력 : 1 10 20
총평
문제를 푸는 중에 생각 하게 만든 것은 n == 1 이 될때까지 루프를 돌려야 한다는 점, 짝수일 경우와 홀수일 경우 를 체크해야 한다는 점, 그리고, 사이 값들의 싸이클 길이를 기록해 두어야 한다는 점, 이 중 최고 큰 사이클을 출력해야 하는 점 을 우선 생각했고, 부수적으로 값이 입력 값의 대소관계에 따른 문제점을 추가적으로 생각했다.
음, 입 코딩은 여기서 그만, 루아 코드 첨부
'책 정리 > Programming Challenges : 알고리즘 트래이닝 북' 카테고리의 다른 글
문제 10, 포커 패 (Poker Hands) (191) | 2009.11.06 |
---|---|
문제 9, 유쾌한 점퍼 (Jully Jumpers) (191) | 2009.11.01 |
문제 8, 호주식 투표법 (Australian Voting) (191) | 2009.11.01 |
문제 7 : 체크 확인 - Check the Check (759) | 2009.10.28 |
문제 6 : 인터프리터(Interpreter) (550) | 2009.10.22 |
문제 5 : 그래픽 편집기(Graphical Editor) (358) | 2009.10.13 |
문제 4 : LCD 디스플레이(LCD Display) (3) | 2009.03.01 |
문제 3 : 여행 ( The Trip ) (1) | 2009.02.19 |
문제 2 : 지뢰 찾기(minesweeper) (1) | 2009.02.18 |
알고리즘 트레이닝 북 (PROGRAMMING CHALLENGES) (0) | 2009.02.15 |
최근댓글