콜라츠 추측으로 숫자 N을 1로 만들고 계산 과정을 그래프로 나타낸다.
나타낸 그래프의 면적을 구하는 문제이다.
각 구간의 넓이를 구해서 더하면 되는데
사다리꼴 넓이 공식을 이용하면 된다.
(윗변 + 아랫변) x 높이 / 2
높이는 어차피 1이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import matplotlib.pyplot as plt def GetWidth(a, b): return (a+b)/2 def solution(k, ranges): sqc = [] answer = k sqc.append(k) while answer!=1: if answer %2==0: answer /=2 else : answer = answer*3+1 sqc.append(answer) print(sqc) plt.plot(sqc) plt.show() answer = 0 if sum(ranges)>0: for i in range(ranges[0], ranges[-1]): answer += GetWidth(sqc[+i], sqc[+i+1]) else: for i in range(0, len(sqc)-1): answer += GetWidth(sqc[+i], sqc[+i+1]) return answer print(solution(5, [0,0])) | cs |
그래프를 출력하기 위해 파이썬으로 만들었다.
n=5인 경우, 5->16->8->4->2->1
와 같은 과정으로 계산되며 전체 면적을 계산하면 33이 나온다.
결과
다른 결과
댓글 없음:
댓글 쓰기