한 경기가 조직될 예정이라고 가정합니다. 도로에 다른 돌이 놓여 있는 곳. 레이스 시작 지점에 버킷 하나가 있으며 첫 번째 스톤에서 6단위 떨어져 있습니다. 다른 돌들은 서로 4단위 떨어져 있고 차례로 일렬로 놓여 있습니다. 이제 참가자들은 양동이에서 시작하여 가장 가까운 돌을 수집하고 돌아와서 그 돌을 양동이에 넣은 다음 다시 실행하여 다음으로 가까운 돌을 수집하고 뒤로 달리고 양동이에 넣습니다. 이 과정은 모든 돌이 양동이에 들어갈 때까지 계속됩니다. n개의 돌이 있는 경우 참가자가 커버해야 하는 총 거리를 찾아야 합니다.
따라서 입력이 n =5와 같으면 출력은 2*6 + 2(6 + 4) + 2(6 + 4 + 4) + 2(6 + 4 + 4 + 4) + 2와 같이 140이 됩니다. (6 + 4 + 4 + 4 + 4) =140
이것을 풀기 위해 우리는 이 방정식을 풀어야 합니다 -
-
스톤 1의 경우 (6+6) =2*6 거리를 덮어야 합니다.
-
스톤 2의 경우 ((6+4)+(6+4)) =2*(6+4) 거리를 덮어야 합니다.
-
스톤 3의 경우 ((6+4+4)+(6+4+4)) =2*(6+4+4) 거리를 덮어야 합니다.
-
스톤 n의 경우 ((6+4*(n-1))+(6+4*(n-1))) =2*(6+4*(n-1)) 거리피>
우리가 덮어야 하는 모든 돌에 대해 -
-
D =2*6 + 2*(6+4) + 2*(6+4+4) + … + 2*(6+4*(n-1))
-
D =2*[6 + (6+4) + (6+2*4) + … + (6+(n-1)*4)]
-
D =2*[6n + 4(1 + 2 + … + (n-1))]
-
D =2*[6n + 4(n*(n-1)/2)]
-
D =2*[6n + 2(n*(n-1))]
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def find_distance(n): return 2*(6*n + 2*((n-1)*n)) n = 5 print(find_distance(n))
입력
5
출력
140