TABLICE C++



Dany jest ciąg (co najmniej trzech) liczb naturalnych. Wśród wszystkich liczb jest zawsze dokładnie jedna, o odmiennej parzystości niż wszystkie inne. Znajdź ją.

Wejście
W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, 3 <= N <= 100000. W drugim wierszu wejścia znajduje się ciąg liczb naturalnych A_i, 0 <= A_i <= 10^9, pooddzielanych pojedynczymi odstępami.

Wyjście
Należy wypisać jedną liczbę naturalną - liczbę o odmiennej parzystości niż pozostałe.

Przykład
Dla danych wejściowych

3
1 0 1
poprawną odpowiedzią jest
0


Odpowiedź :

Odpowiedź:

#include <iostream>

int main() {

   int n; //zmienna na przechowywanie rozmiaru tablicy

   std::cin >> n; //pobieramy n

   int *tab = new int[n]; //tablica dynamiczna, bo wielkosc tablicy jest wprowadzana z klawiatury

   for(int i = 0; i < n; i++){ //wczytywanie liczb do tablicy

       std::cin >> tab[i];

   }

   int oddCounter = std::count_if(tab, tab + n, [](const int a){return a % 2 == 1;}); //liczenie niparzystych

   int evenCounter = std::count_if(tab, tab + n, [](const int a){return a % 2 == 0;}); //liczenie parzystych

   bool isOddLess = oddCounter < evenCounter; //sprawdzanie czy nieparzystych jest mniej niz parzystych

   for(int i = 0; i < n; i++){

       if(isOddLess && tab[i] % 2 == 1){ //jesli nieparzystych jest mniej i trafimy na nieparzysta to wyswietlamy

           std::cout << tab[i];

       }

       else if(!isOddLess && tab[i] % 2 == 0){ //jesli parzystych jest mniej to wyswietlamy parzystą

           std::cout << tab[i];

       }

   }

   delete [] tab;

   return 0;

}

Wyjaśnienie:

Można to na wiele sposobów zrobić, ale wybrałem taki