Cho các n
số trong một mảng (bạn không thể cho rằng chúng là số nguyên), tôi muốn tính sản phẩm của tất cả các tập hợp con có kích thước n-1
.
Bạn có thể làm điều này bằng cách nhân tất cả các số với nhau và sau đó chia cho từng số một, miễn là không có số nào bằng không. Tuy nhiên, làm thế nào nhanh chóng bạn có thể làm điều này mà không có phân chia?
Nếu bạn không cho phép chia, số lượng hoạt động số học tối thiểu (ví dụ: nhân và cộng) là bao nhiêu để tính sản phẩm của tất cả các tập con có kích thước n-1?
Rõ ràng bạn có thể làm điều đó trong (n-1)*n
phép nhân.
Để làm rõ, đầu ra là n
các sản phẩm khác nhau và các hoạt động duy nhất ngoài việc đọc và ghi vào bộ nhớ được phép là nhân, cộng và trừ.
Thí dụ
Nếu đầu vào gồm ba chữ số 2,3,5
, sau đó đầu ra là ba số 15 = 3*5
, 10 = 2*5
và 6 = 2*3
.
Tiêu chí chiến thắng
Các câu trả lời sẽ đưa ra một công thức chính xác cho số lượng các phép toán số học mà mã của chúng sẽ sử dụng theo thuật ngữ n
. Để làm cho cuộc sống đơn giản, tôi sẽ chỉ cần cắm n = 1000
vào công thức của bạn để đánh giá điểm số của nó. Càng thấp càng tốt.
Nếu quá khó để tạo ra một công thức chính xác cho mã của bạn, bạn có thể chạy nó n = 1000
và đếm các phép toán số học trong mã. Một công thức chính xác sẽ là tốt nhất tuy nhiên.
Bạn nên thêm điểm số n=1000
của bạn cho câu trả lời của bạn để so sánh dễ dàng.
+
trên chỉ số đếm? Nếu đây là trường hợp, chỉ số mảng cũng được tính? (vì đó là sau khi tất cả đường cú pháp cho bổ sung và hội nghị).
(n-1)*n
phép nhân Bạn có ý nghĩa (n-2)*n
, phải không?