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