Hướng dẫn giải của [200 đề thầy Đức] Bài 46: Giá sách
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.
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
An có a1, a2, a3 cuốn sách và b1, b2, b3 cuốn vở, cần xếp lên giá có n tầng. Sách và vở phải ở tầng riêng, mỗi tầng sách tối đa 5 cuốn, mỗi tầng vở tối đa 10 cuốn. Kiểm tra xem có xếp được không.
Cách làm
- Tính tổng số sách và tổng số vở.
- Số tầng tối thiểu để xếp sách là số tầng lấy trần của (tổng sách / 5). Trong C++ viết là (tổng sách + 4) / 5.
- Số tầng tối thiểu để xếp vở là (tổng vở + 9) / 10.
- Vì sách và vở không được chung tầng, tổng hai số tầng trên phải không vượt quá n. Nếu đúng thì in YES, ngược lại in NO.
Ví dụ: có 5 cuốn sách (1 tầng) và 9 cuốn vở (1 tầng), n = 2 thì 2 <= 2 nên YES.
#include <bits/stdc++.h>
using namespace std;
int main() {
int a1, a2, a3;
int b1, b2, b3;
int n;
cin >> a1 >> a2 >> a3;
cin >> b1 >> b2 >> b3;
cin >> n;
int tongSach = a1 + a2 + a3;
int tongVo = b1 + b2 + b3;
// Mỗi tầng chứa tối đa 5 cuốn sách: cần ít nhất (tổng sách + 4) / 5 tầng
int tangSach = (tongSach + 4) / 5;
// Mỗi tầng chứa tối đa 10 cuốn vở: cần ít nhất (tổng vở + 9) / 10 tầng
int tangVo = (tongVo + 9) / 10;
// Sách và vở phải ở các tầng riêng biệt, nên tổng số tầng cần không được vượt quá n
if (tangSach + tangVo <= n) {
cout << "YES\n";
} else {
cout << "NO\n";
}
return 0;
}
Bình luận