Cho số nguyên không dấu N. Hãy kiểm tra tính chẵn lẻ của N. Trong bài toán này tính chẵn lẻ của N là số bit 1 trong biểu diễn nhị phân của N. Nghĩa là nếu trong biểu diễn nhị phân của N có chứa một số chẵn các bit 1

Cho số nguyên không dấu N. Hãy kiểm tra tính chẵn lẻ của N. Trong bài toán này tính chẵn lẻ của N là số bit 1 trong biểu diễn nhị phân của N. Nghĩa là nếu trong biểu diễn nhị phân của N có chứa một số chẵn các bit 1 thì được coi là có tính chẵn, và ngược lại thì N có tính lẻ, Ví dụ: N = 1310 = 11012, nên N có tính lẻ, còn N = 910 = 10012 nên N có tính chẵn. Đầu vào: Dòng đầu tiên của đầu vào chứa số nguyên T cho biết số bộ dữ liệu cần kiểm tra. Mỗi bộ dữ liệu gồm 1 dòng chứa số nguyên N. Đầu ra: Ứng với mỗi bộ dữ liệu đầu vào, chương trình của bạn cần in ra 1 dòng chứa thông báo “odd” nếu N có tính lẻ hoặc “even” nếu N có tính chẵn. Ví dụ Input Output 2 13 9 odd even Giới hạn: 1<=T<=500; 0<=N<=10^12 C++ nha
Câu trả lời này dùng AI, hãy kiểm tra lại trước khi sử dụng
```cpp
#include
using namespace std;

int main() {
int T;
cin >> T; // Nhập số bộ dữ liệu
while (T--) {
long long N;
cin >> N; // Nhập số nguyên N

// Đếm số bit 1 trong biểu diễn nhị phân của N
int count = 0;
while (N > 0) {
count += (N & 1); // Kiểm tra bit thấp nhất
N >>= 1; // Dịch phải 1 bit
}

// Kiểm tra tính chẵn lẻ của số bit 1
if (count % 2 == 0) {
cout << "even" << endl; // Số bit 1 chẵn
} else {
cout << "odd" << endl; // Số bit 1 lẻ
}
}
return 0;
}
```

Giải thích chi tiết về chương trình:

1. Nhập vào số bộ dữ liệu T: Chương trình bắt đầu bằng việc đọc số nguyên T, đại diện cho số lượng số nguyên N cần kiểm tra.

2. Vòng lặp kiểm tra từng bộ dữ liệu: Sau khi đọc T, chương trình sẽ thực hiện vòng lặp T lần. Mỗi lần, nó sẽ đọc một số nguyên N.

3. Đếm số bit 1: Để kiểm tra tính chẵn lẻ, chương trình cần xác định số bit 1 trong biểu diễn nhị phân của N.
- Sử dụng một biến `count` để đếm số bit 1.
- Trong mỗi vòng lặp, chương trình kiểm tra bit thấp nhất bằng cách sử dụng `N & 1`. Nếu bit đó là 1, `count` sẽ được tăng lên.
- Sau đó, `N` sẽ được dịch sang phải một bit (N >>= 1), điều này sẽ loại bỏ bit thấp nhất mà chúng ta đã kiểm tra, cho phép tiếp tục kiểm tra các bit còn lại.

4. Kiểm tra chẵn lẻ: Sau khi đếm xong số bit 1, chương trình sẽ kiểm tra xem giá trị của `count` là chẵn hay lẻ bằng cách dùng `count % 2`.
- Nếu là 0 (chẵn), in ra "even".
- Nếu là 1 (lẻ), in ra "odd".

5. Đầu ra: Kết quả được in ra ngay lập tức sau khi kiểm tra cho mỗi số N.

Chương trình hoạt động hiệu quả với các số nguyên trong khoảng [0, 10^12] do cách kiểm tra bit nhị phân và sử dụng phép toán bitwise trong quá trình đếm. Người dùng có thể dễ dàng mở rộng hoặc chỉnh sửa chương trình này để phục vụ cho các yêu cầu khác liên quan đến xử lý bit.
Đăng phản hồi