Mã cố định
Đó là một tình huống giả định vào tối thứ Sáu và bạn đã mời những người bạn chơi golf thông thường tham gia vào sở thích yêu thích của bạn: chơi golf mã. Tuy nhiên, vì đây là một nhiệm vụ làm cạn kiệt não bộ, bạn cần chọn một số thực phẩm bổ não cho nhóm để bạn có thể chơi golf nhiều nhất có thể khỏi mã của mình.
Bây giờ, món ăn vặt yêu thích của mọi người là cốm gà, nhưng có một vấn đề: Không có gói duy nhất nào đáp ứng nhu cầu của mọi người. Vì vậy, vì bạn đã có tâm trạng chơi gôn, bạn quyết định tạo một chương trình tìm ra chính xác những gói bạn phải mua để có thể đáp ứng nhu cầu Nugget của mọi người.
Kích cỡ gói nugget gà ở khắp mọi nơi, và tùy thuộc vào nơi bạn sống trên thế giới, kích thước tiêu chuẩn cũng thay đổi. Tuy nhiên, [nơi phục vụ cốm] gần nhất có các kích cỡ sau của gói nugget:
4, 6, 9, 10, 20, 40
Bây giờ bạn có thể nhận thấy rằng bạn không thể đặt hàng các kết hợp cố định nhất định. Ví dụ, 11cốm là không thể, vì không có sự kết hợp nào 11chính xác bằng nhau . Tuy nhiên, bạn có thể thực hiện 43bằng cách nhận 1 gói 20, 1 gói 10, 1 gói 9và 1 gói 4,
20 + 10 + 9 + 4 = 43 (597)
trong đó 597mỗi thuật ngữ bình phương và được cộng lại với nhau (gợi ý: giải pháp tối ưu có giá trị này là giá trị cao nhất) . Tất nhiên có nhiều cách khác để làm 43, nhưng như bạn biết, càng nhiều cốm trên mỗi gói, giá càng rẻ cho mỗi nugget. Vì vậy, bạn muốn lý tưởng mua số lượng gói ít nhất và với số lượng lớn nhất để giảm thiểu chi phí của bạn.
Nhiệm vụ
Bạn nên tạo một chương trình hoặc hàm có danh sách các số nguyên tương ứng với yêu cầu của mỗi người. Sau đó, bạn nên tính toán và in thứ tự α hiệu quả nhất để mua cốm gà. Thứ tự α hiệu quả nhất về chi phí là sự kết hợp theo đó tổng bình phương của mỗi đại lượng là cao nhất. Nếu có hoàn toàn không có cách nào để mua cốm một cách hoàn hảo, bạn phải in một giá trị falsy như 0, False, Impossible!, hoặc bất cứ điều gì có sẵn trong ngôn ngữ của bạn.
Ví dụ I / O:
[2 7 12 4 15 3] => [20 10 9 4]
1, 1, 2, 1 => False
6 5 5 5 5 5 9 => 40
[6, 4, 9] => 9 10
1 => 0
199 => 40, 40, 40, 40, 20, 10, 9
2 => Impossible!
Dưới đây là danh sách các giải pháp lý tưởng cho 400 đầu tiên. Lưu ý những giải pháp này không được định dạng theo cách tôi mong đợi là của bạn, mỗi giải pháp đều tupleở dạng (N lots of M).
Quy tắc
- Không có sơ hở tiêu chuẩn.
- Không sử dụng các hàm dựng sẵn thực hiện tất cả hoặc phần lớn nhiệm vụ, chẳng hạn như
FrobeniusSolvetrong Mathicala.
α - Để làm rõ điều này với một ví dụ, bạn cũng có thể thực hiện 43 bằng cách thực hiện 4 + 6 + 6 + 9 + 9 + 9 = 43 (319), nhưng điều này sẽ không tối ưu, và do đó, một đầu ra không chính xác, vì tổng bình phương nhỏ hơn kết hợp tôi đã lưu ý trong phần giới thiệu. Về cơ bản, tổng bình phương cao hơn = chi phí thấp hơn = hiệu quả nhất về chi phí.