0.Cắt Ruy Băng


Submit solution

Points: 2 (partial)
Time limit: 1.0s
Memory limit: 98M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Hôm nay Ryze tham gia một BigGame, trong đó có trò cắt ruy bang. Ryze phải cắt ruy bang có chiều dài n thành các mảnh thỏa mãn:

• Các mảnh có chiều dài là a hoặc b hoặc c

• Số mảnh cắt được là nhiều nhất

Hãy giúp Ryze xác định số mảnh nhiều nhất có thể cắt được.

Input

Một dòng chứa 4 số nguyên n, a, b, và c (1 <= n, a, b, c <= 4000)

Output

Đáp án của bài toán. Đề bài đảm bảo luôn tồn tại cách cắt thỏa mãn.

Input:

5 5 3 2

Output: 2

Input:

7 5 5 2

Output:

2

Giải thích:

Test 1: 2 mảnh lần lượt có độ dài là 2 và 3

Test 2: 2 mảnh lần lượt có độ dài là 2 và 5


Comments


  • -1
    LãoTam  commented on July 6, 2023, 4:25 p.m.

    Tham Khảo xíu:

    #include <iostream>
    using namespace std;
    
    int maxPieces(int n, int a, int b, int c) {
        // Tìm số lượng mảnh từng loại có thể cắt được
        int maxPieces = 0;
        for (int i = 0; i <= n/a; i++) {
            for (int j = 0; j <= (n - i*a)/b; j++) {
                int k = (n - a*i - b*j) / c;
                if (a*i + b*j + c*k == n) {
                    maxPieces = max(maxPieces, i + j + k);
                }
            }
        }
        return maxPieces;
    }
    
    int main() {
        int n, a, b, c;
        cin >> n >> a >> b >> c;
    
        int result = maxPieces(n, a, b, c);
        cout << result << endl;
    
        return 0;
    }

  • 0
    Giang_CNTT3_K60  commented on May 19, 2020, 3:52 p.m.

    ad cho e xin test 8 đc ko ạ :)