fbpx

Problema #1148 – ExistaImpareDivImp – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă în şir există elemente impare.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.

Date de ieşire

Programul afișează pe ecran mesajul DA, dacă şirul conţine elemente impare, respectiv NU în caz contrar.

Restricţii şi precizări

  • 1 ≤ n ≤ 100
  • elementele şirului vor fi mai mici decât 10000

Exemplu

Date de intrare

5
2 8 6 10 8

Date de ieșire

NU
#include <bits/stdc++.h>
using namespace std;

bool exista_impar(int a[], int st, int dr){
    if(st == dr)
        return a[st] % 2 == 1;
    else{
        int mij = (st + dr) / 2;
        return exista_impar(a, st, mij) || exista_impar(a, mij + 1, dr);
    }
}

int main()
{
    int n, a[1001];
    cin >> n;
    for(int i = 1; i <= n; ++i)
        cin >> a[i];

    if(exista_impar(a, 1, n))
        cout << "DA";
    else
        cout << "NU";

    return 0;
}
Comentarii

S-ar putea sa iti placa