Hướng dẫn giải của [200 đề thầy Đức] Bài 34: Dãy số
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
Cho a là số lượng số chẵn và b là số lượng số lẻ trong một dãy số tự nhiên liên tiếp. Kiểm tra xem có tồn tại dãy như vậy không, in YES hoặc NO.
Cách làm
- Dãy có a + b phần tử. Dãy phải có ít nhất 1 phần tử, nên a + b phải lớn hơn 0.
- Trong một dãy số liên tiếp, các số chẵn và số lẻ xen kẽ nhau, nên số chẵn và số lẻ chênh nhau không quá 1.
- Vậy nếu |a - b| <= 1 (và a + b >= 1) thì có dãy thỏa mãn, in YES. Ngược lại in NO.
Ví dụ: a = 2, b = 3 thì dãy [2, 3, 4, 5, 6] thỏa mãn (YES). a = 3, b = 1 thì chênh nhau 2 nên không có dãy nào (NO).
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
// Dãy phải có ít nhất 1 số
// Số chẵn và số lẻ trong dãy số liên tiếp chênh nhau không quá 1
int chenhLech = a - b;
if (chenhLech < 0) chenhLech = -chenhLech;
if (a + b >= 1 && chenhLech <= 1) {
cout << "YES\n";
} else {
cout << "NO\n";
}
return 0;
}
Bình luận