#include <iostream> using namespace std; int main() { int n; int ji = 0; int temp; while (cin >> n) { // 注意 while 处理多个 case for (int i = 0; i < n; ++i) { cin >> temp; if (temp % 2 == 1) { ++ji; } } if ((ji == 0) || (ji == 2 && n == 3)) { cout << "NO\n"; } else { cout << "YES\n"; } } } // 64 位输出请用 printf("%lld")
判断奇数的个数,组合的形式为:1奇数2偶数、3奇数。反过来说,奇数个数大于等于三的都可以。
那就剩下三种情况,没有奇数、只有一个、只有两个。
没有奇数肯定不行!
只有一个肯定可以,因为数据总数大于等于三,剩下两个都是偶数,属于第一种情况。
有两个奇数时,看是否能形成第一种情况,能找到2个偶数就可以,也就是说,总个数大于三。也就是总个数等于三时,不行!
综上,不行的只有两种情况。
进阶:可能会出现超长数字,无法做余数。
进阶:三数之和,动态规划。