top1编程
← 返回题目
题解

判断偶数

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4392 判断偶数(入门)

    解题思路

    输入 n 个整数,要输出两样东西:这 n 个数里偶数的个数,以及它们是不是"全都是偶数"。

    做法很直接,一边读一边判断: 用一个计数器 cnt,遇到偶数(a % 2 == 0)就加 1; 再用一个"标志" all 表示"到目前为止看到的全是偶数",一开始设成 1(表示是)。只要遇到一个奇数,就把 all 改成 0,并且以后都不再改回来。

    读完后先输出 cnt,再根据 all 是 1 还是 0 输出 Yes 或 No。

    拿样例 2 4 6 8 10 来说,五个全是偶数,cnt = 5,all 一直是 1,输出 "5" 和 "Yes",和样例一致。

    边界情况:如果这 n 个数里混进一个奇数,比如 2 4 6 7 10,那么 cnt = 4,all = 0,输出 "4" 和 "No"。如果 n 个数全是奇数,cnt = 0,all 也是 0,输出 "0" 和 "No"。注意"偶数个数"和"是否全偶"是两个不同的问题:偶数个数可以是 0(全是奇数),但这时一定不是全偶。

    参考代码

    // 程序用途:统计n个数中偶数的个数,并判断是否全部都是偶数
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        int cnt = 0;                      // cnt统计偶数个数
        int all = 1;                      // all=1表示"目前看到的全是偶数"
        for (int i = 0; i < n; i++) {
            int a;
            cin >> a;
            if (a % 2 == 0) cnt++;        // 是偶数就计数加1
            else all = 0;                 // 一出现奇数,就不是全偶了
        }
        cout << cnt << endl;              // 第一行:偶数个数
        if (all) cout << "Yes" << endl;   // 第二行:全偶输出Yes
        else cout << "No" << endl;        // 否则输出No
        return 0;
    }
    

    复杂度分析

    循环读入 n 个数,时间复杂度是 O(n);空间上只用了计数器和一个标志变量,额外空间复杂度是 O(1)。

    • 1