SH04-200 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;
}
Câu hỏi trong lớp
Xem thêm