L1-022 奇偶分家 (10 point(s))

  • 试着玩了下位运算求奇偶,如果为偶数那么二进制位比如 2 就有 1 0 而与 1 的二进制 0 1 取与运算的时候,得 0 。相反奇数比如 3 二进制为 1 1 & 0 1 = 0 1 。

    对更大的数同样成立,所以所以可以写成 if(tmp & 1) odd++ 。

    当时还想了想会不会有非奇偶的数,所以用了两个 if 来判断。看了下别人代码同时结合题目条件 “给出N个非负整数” 是不包括 0 的情况的,所以不是奇数就是偶数了,可以用 if-else 判断。

    参考代码

// 位运算
#include <bits/stdc++.h>
using namespace std;

int main(){
	int N, tmp, odd = 0, even = 0;
	cin >> N;
	while(N--){
		cin >> tmp;
		if(tmp & 1) odd++;
		else even++;
	}
	cout << odd << " " << even;
} 
// 取余
#include <bits/stdc++.h>
using namespace std;

int main(){
	int N, tmp, odd = 0, even = 0;
	cin >> N;
	while(N--){
		cin >> tmp;
		if(tmp % 2 == 1) odd++;
		if(tmp % 2 == 0) even++;
	}
	cout << odd << " " << even;
} 

posted on 2021-10-06 09:48  Atl212  阅读(80)  评论(0编辑  收藏  举报

导航