Hướng dẫn giải của [200 đề thầy Đức] Bài 44: Đong nước


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Hằng chỉ mượn đúng 1 can dung tích a. Để đong đúng k lít thì a phải là ước của k, và số lần đong là k / a. Ta chọn can có số lần đong ít nhất trong các can thỏa mãn.

Bài này chỉ cần kiểm tra từng can rồi lấy min, nên chỉ viết 1 sub (lời giải đầy đủ). Đạt 83/83 test.

Sub 1: Duyệt từng can — ~O(N)~
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, k;
    cin >> n >> k;
    long long best = LLONG_MAX;
    for (int i = 0; i < n; i++) {
        int a;
        cin >> a;
        // Chi dung duoc can co dung luong chia het k (do dung dung k lit bang so lan nguyen)
        if (k % a == 0) best = min(best, (long long)(k / a));
    }
    cout << best << "\n";
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.