Hướng dẫn giải của [200 đề thầy Đức] Bài 27: Bóng ma thuật


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

Harry Porter có A tinh thể vàng và B tinh thể xanh dương. Cần chế tạo X quả vàng, Y quả xanh lá và Z quả xanh dương. Tìm số tinh thể còn thiếu ít nhất.

Cách làm

Lập bảng nhu cầu tinh thể:

  • Một quả vàng cần 2 tinh thể vàng, nên X quả vàng cần 2*X tinh thể vàng.
  • Một quả xanh lá cần 1 tinh thể vàng và 1 tinh thể xanh dương, nên Y quả cần thêm Y vàng và Y xanh dương.
  • Một quả xanh dương cần 3 tinh thể xanh dương, nên Z quả cần 3*Z xanh dương.

Vậy tổng nhu cầu là vàng = 2X + Y và xanh dương = Y + 3Z. Với mỗi loại, nếu nhu cầu lớn hơn số đang có thì phần thiếu là hiệu của hai số đó, còn nếu đủ thì thiếu bằng 0. Đáp số là tổng phần thiếu của hai loại.

Các số có thể lên tới khoảng 2*10^9 nên phải dùng long long.

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long a, b;
    cin >> a >> b;      // a: số tinh thể vàng, b: số tinh thể xanh dương
    long long x, y, z;
    cin >> x >> y >> z; // x: quả vàng, y: quả xanh lá, z: quả xanh dương

    // Cần tinh thể vàng: 2 cho mỗi quả vàng, 1 cho mỗi quả xanh lá
    long long canVang = 2 * x + y;
    // Cần tinh thể xanh dương: 1 cho mỗi quả xanh lá, 3 cho mỗi quả xanh dương
    long long canXanh = y + 3 * z;

    // Số tinh thể còn thiếu (nếu đủ thì thiếu bằng 0)
    long long thieuVang = 0;
    long long thieuXanh = 0;
    if (canVang > a) thieuVang = canVang - a;
    if (canXanh > b) thieuXanh = canXanh - b;

    cout << thieuVang + thieuXanh << "\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.