题目要求统计给定的 ( n ) 个正整数中,奇数有多少个,偶数有多少个。
奇数是指不能被 ( 2 ) 整除的整数,偶数是指能被 ( 2 ) 整除的整数。
本题属于基础的计数问题,只需要依次读入每个数,判断奇偶性并累加对应计数器即可。
%,用来判断一个数是否能被 ( 2 ) 整除。程序需要读入 ( n ) 个整数,对每个整数进行一次取模和简单的加法操作,这些操作的时间复杂度均为 ( O(1) )。
因此总时间复杂度为 ( O(n) )。
由于 ( n ) 最大为 ( 10^5 ),可以在 ( 1 ) 秒内轻松运行完成。
空间复杂度方面,仅使用了有限的几个变量,为 ( O(1) )。
cpp1#include<bits/stdc++.h> 2using namespace std; 3int main(){ 4 int n; 5 int a = 0, b = 0; // a 统计奇数个数,b 统计偶数个数 6 cin >> n; 7 for(int i = 1; i <= n; i++){ 8 int x; 9 cin >> x; 10 if(x % 2 != 0) 11 a++; 12 else 13 b++; 14 } 15 cout << a << " " << b << "\n"; 16 return 0; 17}
std 命名空间,避免重复书写 std::。n 存储数的个数。a 和偶数计数器 b 为 ( 0 )。n。for 循环执行 n 次。x。x % 2 != 0 成立,说明 x 是奇数,a 加1;否则为偶数,b 加1。a 和偶数个数 b,中间用空格分隔,并换行。return 0 表示程序正常结束。本题直接考察了对整数奇偶性的判断及简单的计数操作。实现时注意初始化计数器,不要忘记输出格式中的空格。对于更大的数据范围,由于时间复杂度为 ( O(n) ),算法依然适用且高效。