1 条题解

  • 0
    @ 2026-6-19 10:30:30

    📝 题目大意

    给定一个长度为 NN 的整数序列 AA,从中筛选出所有偶数,并保持原有顺序输出,用空格分隔。

    💡 解题思路

    1. 题目分析N100N \leq 100,数据范围极小,无需考虑效率问题。题目保证序列中至少包含一个偶数,因此不需要处理全为奇数的情况。
    2. 算法推导:遍历序列中的每个元素 aia_i,判断 aimod2a_i \bmod 2 是否等于 00(即是否为偶数),若是则立即输出。由于边读入边输出,无需额外存储偶数列表。
    3. 边界与细节
      • 输出格式要求用空格分隔,std.cpp 中每个偶数输出后都带一个空格,末尾会多一个空格,但 AtCoder 判题机对此容忍,不用额外处理。
      • 数组 aa 开到了 100005100005,远超 NN 上限,避免了越界风险。
      • 数组下标从 11 开始,与题目中 AiA_i 的编号习惯一致。

    ⏱️ 复杂度分析

    • 时间复杂度O(N)O(N),只需遍历一次序列。
    • 空间复杂度O(N)O(N),仅存储输入数组。

    💻 标准代码 (C++)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main () {
    	int n, a[100005];            // n: 序列长度, a: 存储输入序列(多开空间防越界)
    	scanf("%d", &n);             // 读入 N
    	for (int i = 1; i <= n; i++) {
    		scanf("%d", &a[i]);      // 读入第 i 个数
    		if (a[i] % 2 == 0)       // 判断是否为偶数
    			printf("%d ", a[i]); // 直接输出偶数,末尾会多一个空格但不影响 AC
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    687
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者