Thách thức liên quan đến tiếp thị đa cấp.
Một đồng nghiệp muốn nhận được phần thưởng. Vì vậy, nó thu hút N
các nhà đầu tư ( N>=1
), mỗi nhà đầu tư thứ i đầu tư x[i]
. Khi tổng số tiền vượt quá ngưỡng, x[0]+x[1]+...+x[N-1] >= T
một đồng nghiệp có thể được khen thưởng. Nhưng chỉ khi một điều kiện sau được thỏa mãn:
- Số lượng nhà đầu tư tối thiểu phải lớn hơn
M
, (M<=N
) - Đối với ít nhất một số nguyên
k
, ở đâuk>=M
vàk<=N
, bất kỳk
nhà đầu tư nào cũng phải đầu tư ít nhấtT/k
mỗi số nguyên;
Cho N, x[], T, M
bạn nên xác định xem phần thưởng của đồng nghiệp có được tạo ra hay không (kết quả boolean, "có" hoặc "không"). Mã ngắn nhất sẽ thắng.
Ví dụ:
N=5; M=3; T=10000
, để tạo ra phần thưởng của đồng nghiệp, một trong những điều sau đây phải được thỏa mãn:
- bất kỳ 3 đầu tư ít nhất 3334 mỗi
- bất kỳ 4 đầu tư ít nhất 2500 mỗi
- Tất cả 5 đầu tư ít nhất 2000 mỗi
N=6; M=2; T=5000
:
- bất kỳ 2 đầu tư ít nhất 2500 mỗi
- bất kỳ 3 đầu tư ít nhất 1667 mỗi
- bất kỳ 4 đầu tư ít nhất 1250 mỗi
- bất kỳ 5 đầu tư ít nhất 1000 mỗi
- tất cả 6 đầu tư ít nhất 834 mỗi
khái quát: cho bất kỳ k
, ở đâu k>=M
và k<=N
:
- bất kỳ
k
củaN
các nhà đầu tư có vốn đầu tư ít nhấtT/k
mỗi
Các trường hợp thử nghiệm:
định dạng:
N, x[], T, M -> correct answer
6, [999, 999, 59, 0, 0, 0], 180, 3 -> 0
6, [0, 60, 0, 60, 60, 0], 180, 3 -> 1
6, [179, 89, 59, 44, 35, 29], 180, 3 -> 0
6, [179, 89, 59, 44, 35, 30], 180, 3 -> 1
6, [179, 89, 59, 44, 36, 29], 180, 3 -> 1
6, [179, 90, 59, 44, 35, 29], 180, 3 -> 0
6, [30, 30, 30, 30, 29, 30], 180, 3 -> 0
6, [30, 30, 30, 30, 30, 30], 180, 3 -> 1
true
và giá trị trung thực cho false
?
len(x)
sẽ ngắn hơn viếtN
. Điều đó được thực hiện, bởi vì đối với mảng được phân bổ độngx
trong C không cólen(x)
hàm trực tiếp - vì vậy bạn luôn có thể tham khảo độ dài làN
. Để thuận tiện, bạn có thể coi tất cả dữ liệu đầu vàoN, x[], T, M
là một số hằng số được xác định bên ngoài hoặc một số ngôn ngữ được tích hợp sẵn.