Hướng dẫn giải của [CSES 1754] Coin Piles
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.
Vì mỗi lượt lấy đi ba đồng xu, tổng số đồng xu phải chia hết cho ba.
Mỗi lượt lấy ít nhất một đồng xu từ mỗi đống, do đó số đồng xu trong một đống không được vượt quá hai lần số đồng xu trong đống kia.
Nếu các điều kiện trên được thỏa mãn, ta luôn có thể làm rỗng các đống bằng thuật toán tham lam lấy hai đồng xu từ đống có nhiều xu hơn. Nếu cả hai đống có cùng số xu, ta có thể chọn tùy ý.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int a, b;
cin >> a >> b;
if ((a + b) % 3 == 0 && a <= 2 * b && b <= 2 * a) {
cout << "YES\n";
} else {
cout << "NO\n";
}
}
}
Chương trình tham khảo
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int a, b;
cin >> a >> b;
if ((a + b) % 3 == 0 && a <= 2 * b && b <= 2 * a) {
cout << "YES\n";
} else {
cout << "NO\n";
}
}
}
Bình luận