프로그래밍 기초/자료구조 & 알고리즘
3n+1
아몰라
2010. 5. 3. 11:57
이러한 알고리즘이 있다.
n= 10 이면
10 ,5, 16, 8, 4, 2, 1 cnt = 7 (사이클길이)
짝수이면 n/2 로 나누고 , 홀수이면 3n+1 로 한다.
이 알고리즘을 적용을하면 결국에 n 은 1에 이르게 된다.
이 가설은 적어도 1000000까지의 정수에 대해서는 참이라고 한다.
이제부터 문제다.
어떠한 두 정수를 입력받는다.
0~1000000까지만 값을 입력받을수 있도록 하고
예를 들어 1 , 10 을 입력받는다 그러면 1 ~10 사이에 대해 최대 사이클 길이를 구하면 된다.
입력예 출력 예
1 10 1 10 20
100 200 100 200 125
먼저 입력 받는 수를 a와 b 라고 하고 a에 대한 알고리즘을 구했고 그 다음에 a+1 에 대한 결과와 비교하고
또 a+1과 계속 비교해가면서 b까지 비교해서 가장 큰 최대사이클을 구하는 방식으로 하였다.
생각보다 알고리즘 문제 재밌는거 같다 ㅋㅋㅋ
