특별한 기술 없이 짝수이면 2로 나누고, 홀수이면 3을 곱한 후 1을 빼는 연산을 반복하면서 1이 될 때까지 반복하면서 최대값을 갱신하면 된다.
비슷한 문제가 더블릿에도 있다. (여기선 수열의 길이가 아닌 수열 전체를 출력한다.)
그리고 더블릿의 문제와 똑같은 문제가 BOJ에 따로 있다.
main(k,r){while(~scanf("%d",&k)&&k){r=1;while(k>1)r=r<k?k:r,k=(k&1)?(3*k+1):(k/2);printf("%d\n",r);}}
댓글 없음:
댓글 쓰기