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

โปรแกรม Python หาจำนวนลูกบาศก์ที่ถูกตัด


สมมติว่ามีมิติหลายลูกบาศก์ a, b และ c และการใช้มิติเหล่านี้ axbxc จะถูกสร้างขึ้น a, b และ c เป็น co-prime แบบคู่; gcd(a, b) =gcd(b,c) =gcd(c, d) =1. เราต้องตัดกล่องเป็นสองชิ้นด้วยแผ่นเดียวดังรูป เราต้องหาว่ากล่องที่ถูกตัดด้วยวิธีนี้มีกี่ลูกบาศก์ที่ถูกตัดเป็นสองชิ้น เราได้รับอาร์เรย์ที่มีสามมิติที่เป็นไปได้ และเราต้องหาคำตอบจากสิ่งนั้น

โปรแกรม Python หาจำนวนลูกบาศก์ที่ถูกตัด

การตัดจะทำในลักษณะนี้เป็นระนาบที่เคลื่อนผ่านจุดยอด P, Q และ R

ดังนั้น หากอินพุตเป็น n =3, input_array =[[1, 2, 3], [4, 2, 5], [6, 8, 2]] ผลลัพธ์จะเป็น [5, 18, 37 ]

มี 3 กรณีที่แตกต่างกันและเราต้องหาจำนวนลูกบาศก์ที่ตัด หากตัดลูกบาศก์ในลักษณะที่แสดงในภาพ ตัด 5, 16 และ 37 ลูกบาศก์ตามลำดับ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ &miuns;

  • ผลลัพธ์ :=รายการใหม่
  • สำหรับฉันในช่วง 0 ถึง n ให้ทำ
    • a :=input_array[i, 0]
    • b :=input_array[i, 1]
    • c :=input_array[i, 2]
    • val :=ค่าพื้นของ (a * b + a * c + b * c - 1) / 2 mod 1000000007
    • ใส่ val ที่ส่วนท้ายของเอาต์พุต
  • ผลตอบแทนที่ได้

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

from math import ceil
def solve(n, input_array):
   output = []
   for i in range(n):
      a, b, c = input_array[i][0], input_array[i][1], input_array[i][2]
      val = ((a * b + a * c + b * c - 1) // 2 % 1000000007)
      output.append(val)
   return output
print(solve(3, [[1, 2, 3], [4, 2, 5], [6, 8, 2]]))

อินพุต

3, [[1, 2, 3], [4, 2, 5], [6, 8, 2]]

ผลลัพธ์

[5, 18, 37]