Computer >> Máy Tính >  >> Lập trình >> lập trình C

Thêm số tối thiểu vào một mảng để tổng trở thành số chẵn trong lập trình C.

Cho một mảng, hãy thêm số nhỏ nhất (phải lớn hơn 0) vào mảng để tổng của mảng trở thành số chẵn.

Đầu vào - 1 2 3 4,

Đầu ra - 2

Giải thích - Tổng của mảng là 10 nên ta

thêm số tối thiểu 2 để tổng bằng nhau.

Phương pháp 1 :tính tổng tất cả các phần tử của mảng, sau đó kiểm tra xem tổng là chẵn thì thêm số nhỏ nhất là 2, nếu không thì thêm số nhỏ nhất là 1.

Đầu vào - 1 2 3 4,

Đầu ra - 2

Giải thích - Tổng của mảng là 10, vì vậy hãy đọc số 2 tối thiểu để tổng là số chẵn.

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int arr[] = { 1, 2, 3, 4};
   int n=4;
   int sum=0;
   for (int i = 0; i <n; i++) {
      sum+=arr[i];
   }
   if (sum % 2==0) {
      cout <<"2";
   } else {
      cout <<"1";
   }
   return 0;
}

Phương pháp 2 - tính đếm số phần tử lẻ trong mảng. Nếu số lượng các số lẻ hiện tại là chẵn, chúng ta trả về 2, nếu không, chúng ta trả về 1.

Đầu vào - 1 2 3 4 5

Đầu ra - 1

Giải thích - không. trong mảng là 3
thêm số nhỏ nhất 1 để làm cho tổng là số chẵn.

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int arr[] = { 1, 2, 3, 4,5};
   int n=5;
   int odd = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] % 2!=0) {
         odd += 1;
      }
   }
   if (odd % 2==0) {
      cout <<"2";
   } else {
      cout <<"1";
   }
   return 0;
}

Phương pháp 3 - Lấy một biến cờ (khởi tạo là 0). Bất cứ khi nào chúng ta tìm thấy phần tử lẻ trong mảng, chúng ta thực hiện phép toán NOT (!) Trên biến boolean. Toán tử logic này đảo ngược giá trị của biến cờ (có nghĩa là nếu nó là 0, nó sẽ chuyển biến thành 1 và ngược lại).

Đầu vào - 1 2 3 4 5

Đầu ra - 1

Giải thích - biến được khởi tạo là 0.
Duyệt qua mảng
1 là số lẻ, biến đổi 1.
2 là chẵn
3 là số lẻ, biến đổi 0.
4 là số chẵn
5 là số lẻ, biến đã thay đổi 1

Nếu giá trị của biến là 1 thì có nghĩa là có số lẻ các phần tử lẻ, số tối thiểu để tạo tổng các phần tử chẵn là thêm 1.

Số tối thiểu khác là 2.

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int arr[] = { 1, 2, 3, 4,5};
   int n=5;
   bool odd = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] % 2!=0) {
         odd = !odd;
      }
   }
   if (odd) {
      cout <<"1";
   } else {
      cout <<"2";
   }
   return 0;
}