首页 > 试题广场 >

小欧的奇数

[编程题]小欧的奇数
  • 热度指数:1802 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小欧有一个长度为 n 的数组,现在他想挑出 3 个数,使得这 3 个数的和为奇数,如果可以挑出则输出 "YES",否则输出 "NO"。

输入描述:
一行一个整数 n,表示数组的长度。
一行 n 个整数 a_1, a_2, \dots, a_n,表示数组的元素。
3 \leq n \leq 10^5
1 \leq a_i \leq 1000


输出描述:
如果可以挑出 3 个数,使得这 3 个数的和为奇数,则输出 "YES",否则输出 "NO"。
示例1

输入

4
1 2 3 4

输出

YES

说明

选取 a_1, a_2, a_4 即可。
示例2

输入

4
2 4 6 8

输出

NO

说明

无法选取 3 个数使得和为奇数。
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = new int[n];
        int[] b = new int[2];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }
        for (int i = 0; i < n; i++) {
            b[a[i] % 2] ++;
        }
        if (b[1] >= 3 || (b[1] >= 1 && b[0] >= 2)) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }
}
发表于 2024-11-22 15:57:58 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n{};
    cin>>n;
    vector<int> v(n);
    for (int i = 0; i < n; ++i) cin >> v[i];
    if((count_if(v.begin(),v.end(),[](int a){return a&1;})>0&&n!=3)||
    (count_if(v.begin(),v.end(),[](int a){return a&1;})==3&&n==3)) cout<<"YES";
    else cout<<"NO";
}

发表于 2024-11-20 23:05:37 回复(0)