题意
给你 t 组数据,每组输入一个n长度的数组,可以通过i 和 j 赋值,但 i ! = j ,问是否能使数组和为奇数
思路
不能组成奇数和的情况:
- 全为偶数
- 没有偶数,但奇数的个数为偶数
其它情况都能满足和为奇数
code
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
int n,t;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>t;
while(t--){
cin>>n;
int x,cnt=0;
for(int i=1;i<=n;i++){
cin>>x;
if(!(x&1)) ++cnt;
}
if(cnt==n || cnt==0&&!(n&1)) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}
补充:
思路
能组成奇数和的情况:
- 判断和是否为1
- 只要存在有偶数和奇数,那么一定可以通过赋值使得和为奇数
其它情况都不能满足和为奇数
#include<bits/stdc++.h>
using namespace std;
int t,n,x;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>t;
while(t--){
cin>>n;
int sum=0;
int cnt1=0,cnt2=0;
for(int i=1;i<=n;i++){
cin>>x;
sum+=x;
if(x&1) ++cnt1;
else ++cnt2;
}
if(sum&1 || cnt1&&cnt2) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
学如逆水行舟,不进则退