728x90
문제
다음의 점화식에 의해 정해지는 수열 C(n)을 생각하자:
C(n+1) = C(n)/2 (C(n)이 짝수일 때)
= 3*C(n)+1 (C(n)이 홀수일 때)
초항 C(1)이 자연수로 주어지면, 이 점화식은 자연수로 이루어지는 수열을 정한다. 예를 들어, C(1)=26이면, 다음의 수열이 된다.
26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1, ...
이 경우, 수열의 뒷부분은 4, 2, 1 이 끝없이 반복된다. 실제로 C(1)이 5×260보다 작은 자연수인 모든 수열은 언젠가는 4, 2, 1로 끝나게 된다는 것이 알려져 있다.
주어진 입력 C(1)에 대하여 C(n)이 처음으로 1이 되는 n을 출력하시오.
https://www.acmicpc.net/problem/14920
입력
C(1); 1 ≤ C(1) ≤ 100000
출력
C(n)이 처음으로 1이 되는 n
예제
# input
26
# output
11
# input
7
# output
17
문제 풀이
n = int(input())
answer = 1
# n이 1이 될 때까지 반복
while n != 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
answer += 1
print(answer)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90