#include <iostream> #include<vector> #include<algorithm> using namespace std; int main() { int n; cin>>n; int a[100000]; long long sum=0; vector<int> odds; for (int i = 0; i<n; i++) { cin>>a[i]; sum+=a[i];//直接累加,最后总和是不是偶数 if (a[i]%2==1) { odds.push_back(a[i]); } } if (sum%2==0) { cout<<sum<<endl; } else if (odds.empty()) { cout<<0<<endl; } else { sort(odds.begin(), odds.end());//移除里面最小的奇数。让总数为最大偶数 cout << sum - odds[0] << endl; } }
有点难,直接求总数再判断,用vector写更好看,也可以直接找最小奇数、直接判断有没有偶数:
#include <iostream> #include <climits> using namespace std; int main() { int n, x, minOdd = INT_MAX; long long sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> x; sum += x; if (x % 2 == 1) minOdd = min(minOdd, x); } if (sum % 2 == 0) cout << sum << endl; else if (minOdd == INT_MAX) cout << 0 << endl; else cout << sum - minOdd << endl; return 0; }