Codeforce 1296 A. Array with Odd Sum

给你一个长度为n的数列,你可以将一个位置上的数改变成数列中其他任意一个数,可以操作无数次。

问操作任意次之后,能否将数列之和变成一个奇数。

小学数学。奇数个奇数相加还是奇数,偶数个奇数相加是偶数,奇数加偶数是奇数。

统计数列中奇数和偶数的个数。

如果数列长度n是个奇数,奇数的个数>0即可。意味着把数列中所有数变成一个奇数。

如果n是偶数,那需要奇数和偶数的个数都>0。意味着保留一个偶数,其他位置全部换成奇数。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#define ms(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef double ab;
const int N=1e6+10;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        int a=0,b=0;
        for(int i=0;i<n;i++)
        {
            int c;
            cin>>c;
            if(c&1) ++a;
            else ++b;
        }
        if(((n&1)&&a>0)||((n%2==0)&&a>0&&b>0))
            cout<<"YES"<<endl;
        else
        {
            cout<<"NO"<<endl;
        }   
    }
    //system("pause");
}

猜你喜欢

转载自blog.csdn.net/Luowaterbi/article/details/104183353
今日推荐