【GESP 一级】洛谷 B4063 奇数和偶数 题解
一、题目概述本题是GESP 2024 年 12 月一级认证真题对应洛谷题号 B4063是入门阶段的经典统计类题目核心是对批量数据进行奇偶性判断并计数。题目可以简化为输入n个正整数统计其中奇数和偶数的个数按 “奇数个数 偶数个数” 的格式输出。样例输入5 个数字 1、2、3、4、5 → 输出 3 23 个奇数2 个偶数二、核心考察点GESP 一级官方考点这道题覆盖了 GESP 一级的多个高频考点也是编程入门的必备能力考点考察内容难度批量输入与循环控制读取n个数据用循环实现重复处理⭐条件判断与奇偶性利用取模运算%判断数字奇偶性⭐⭐变量计数与累加使用变量记录奇数、偶数的个数⭐⭐数据规模处理题目中n最大可达10^5考察循环效率与输入输出速度C 中cin需关闭同步⭐⭐⭐三、解题思路分析1. 核心逻辑拆解解决这道题只需要三步初始化计数器定义两个变量分别记录奇数个数odd和偶数个数even初始值都为 0循环处理每个数字读取一个数字判断它是奇数还是偶数对应计数器加 1输出结果按 “奇数个数 偶数个数” 的格式输出两个计数器的值。2. 奇偶性判断方法在 C 中判断一个数的奇偶性最常用的方法是取模运算若a % 2 1数字是奇数若a % 2 0数字是偶数。四、完整解题流程读取正整数n表示接下来要处理的数字个数初始化计数器int odd 0, even 0;循环n次读取一个整数a判断a的奇偶性对应计数器 1输出odd和even中间用空格隔开。五、易错点提醒考试避坑计数器初始化错误计数器必须初始化为 0否则会出现随机值导致计数错误。奇偶判断条件写反注意%21是奇数%20是偶数不要写反否则结果完全颠倒。输出格式错误题目要求输出 “奇数个数 偶数个数”中间用一个英文空格隔开不能换行也不能多空格。边界值测试全是奇数如 n3数字 1、3、5 → 输出 3 0全是偶数如 n3数字 2、4、6 → 输出 0 3包含 11 是奇数计数要正确。六、完整 C 代码#include iostream using namespace std; int main() { // 优化cin输入速度应对大数据量 ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin n; // 初始化计数器 int odd 0, even 0; for (int i 0; i n; i) { int a; cin a; if (a % 2 1) { // 奇数计数器1 odd; } else { // 偶数计数器1 even; } } // 按格式输出结果 cout odd even endl; return 0; }七、总结这道题是 GESP 一级中非常典型的循环 判断 计数综合题核心是掌握如何用%判断数字的奇偶性如何用循环批量处理数据如何用计数器记录结果这类题目是编程入门的基础掌握后可以举一反三解决很多类似问题比如统计正数负数个数、统计大于 100 的数字个数等。