Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาระยะทางที่ครอบคลุมเพื่อรวบรวมสิ่งของในระยะทางที่เท่ากันใน Python


สมมติว่ามีการจัดการแข่งขันหนึ่งรายการ ที่ซึ่งหินต่าง ๆ วางอยู่บนถนน มีถังหนึ่งใบอยู่ที่จุดเริ่มต้นของการแข่งขัน ซึ่งอยู่ห่างจากหินก้อนแรก 6 ยูนิต หินก้อนอื่น ๆ ห่างกัน 4 หน่วยและเรียงกันเป็นเส้นตรง ตอนนี้ ผู้เข้าร่วมเริ่มจากถัง แล้วเก็บหินที่ใกล้ที่สุด กลับมาและใส่หินนั้นลงในถัง หลังจากนั้น วิ่งอีกครั้งเพื่อรวบรวมหินที่ใกล้ที่สุดถัดไป วิ่งกลับ และใส่ลงในถัง กระบวนการนี้จะดำเนินต่อไปจนกว่าจะใส่หินทั้งหมดลงในถัง หากมีก้อนหิน n ก้อน เราก็ต้องหาระยะทางทั้งหมดที่จำเป็นสำหรับผู้เข้าร่วม

ค้นหาระยะทางที่ครอบคลุมเพื่อรวบรวมสิ่งของในระยะทางที่เท่ากันใน Python

ดังนั้น ถ้าอินพุตเท่ากับ n =5 ผลลัพธ์จะเป็น 140 เป็น 2*6 + 2(6 + 4) + 2(6 + 4 + 4) + 2(6 + 4 + 4 + 4) + 2 (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