Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 동일한 거리에서 항목을 수집하는 데 걸리는 거리 찾기


한 경기가 조직될 예정이라고 가정합니다. 도로에 다른 돌이 놓여 있는 곳. 레이스 시작 지점에 버킷 하나가 있으며 첫 번째 스톤에서 6단위 떨어져 있습니다. 다른 돌들은 서로 4단위 떨어져 있고 차례로 일렬로 놓여 있습니다. 이제 참가자들은 양동이에서 시작하여 가장 가까운 돌을 수집하고 돌아와서 그 돌을 양동이에 넣은 다음 다시 실행하여 다음으로 가까운 돌을 수집하고 뒤로 달리고 양동이에 넣습니다. 이 과정은 모든 돌이 양동이에 들어갈 때까지 계속됩니다. n개의 돌이 있는 경우 참가자가 커버해야 하는 총 거리를 찾아야 합니다.

Python에서 동일한 거리에서 항목을 수집하는 데 걸리는 거리 찾기

따라서 입력이 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