C++ nha Tính chẵn lẻ Cho số nguyên không dấu N. Trong bài toán này tính chẵn lẻ của N là số bít 1 có 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 số lượng bít 1 là số chẵn thì N coi là có tính chẵn, ngược lại N là số lẻ. Vd: N=13_{10} =1101_{2}N=13 10 ​ =1101 2 ​ có tính lẻ N=9_{10}=1001_{2}N=9 10 ​ =1001 2 ​ có tính chẵn Mô tả đầu vào Dòng đầu tiên ghi số nguyên T là số bộ test T dòng tiếp theo mỗi dòng ghi số nguyên N cần kiểm tra tính chẵn lẻ Ràng buộc 1\leq T \leq 500; 0\leq N \leq 10^{12}1≤T≤500;0≤N≤10 12 Mô tả đầu ra Gồm T dòng, mỗi dòng ghi ra: odd nếu N có tính lẻ even nếu N có tính chẵn Hướng dẫn:*** • Đọc vào từng giá trị x • Phân tích x ra nhị phân, có đếm số chữ số 1 • Nếu số kí tự 1 là chẵn => even và ngược lại odd Test case mẫu Đầu vào mẫu 1 2 13 9 Đầu ra mẫu 1 odd even

1 câu trả lời

#include <bits/stdc++.h>

using namespace std;
long long t,n[100001],s[1001][1001],dem[100001];
int main()
{
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        int v=0;
        dem[i]=0;
        cin>>n[i];
        while(n[i]>0)
        {
            v++;
            s[i][v]=n[i]%2;
            n[i]=n[i]/2;
        }
        for(int j=v;j>=1;j--)
        {
            if(s[i][j]==1) dem[i]++;
        }
    }
    for(int i=1;i<=t;i++)
    {
        if(dem[i]%2==0) cout<<"even"<<endl;
        else cout<<"odd"<<endl;
    }
    return 0;
}