Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python tìm số khối lập phương bị cắt

Giả sử có các khối lập phương kích thước a, b, c tạo thành hộp mới kích thước a x b x c. a, b, c nguyên tố cùng nhau từng cặp: gcd(a,b)=gcd(b,c)=gcd(c,a)=1. Cắt hộp thành hai mảnh bằng một mặt phẳng qua các đỉnh P, Q, R. Tìm số khối lập phương bị cắt thành hai mảnh.

Ví dụ: n = 3, input_array = [[1,2,3], [4,2,5], [6,8,2]], kết quả [5, 18, 37].

Giải thuật

  1. output := []
  2. For i từ 0 đến n-1:
    • a, b, c := input_array[i][0], [1], [2]
    • val := floor((a*b + a*c + b*c - 1) / 2) % 1000000007
    • Thêm val vào output
  3. Trả về output

Ví dụ

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]]))

Input

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

Output

[5, 18, 37]