3627 – FAB

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerinta

Scrieţi definiția completă a subprogramului FAB, care primeşte prin cei 4 parametri a, n, b, m:

a, un tablou unidimensional cu maximum 5000 de elemente întregi

n, un număr natural reprezentând numărul de elemente din tabloul a

b, un tablou unidimensional cu maximum 5000 de elemente întregi

m, un număr natural reprezentând numărul de elemente din tabloul b

Subprogramul returnează 1 dacă orice număr din vectorul b se poate scrie ca sumă a două numere aflate pe poziții diferite în a, sau 0 în caz că există cel puțin un număr din b care nu se poate scrie ca sumă de două numere aflate pe poziții diferite în a.

Rezolvare

def FAB(a, n, b, m):

    # Verificăm fiecare element din tabloul b

    for num in b:

        found = False  # Folosim această variabilă pentru a verifica dacă găsim suma

        # Parcurgem tabloul a pentru a căuta perechi de numere care să dea suma

        for i in range(n):

            for j in range(n):

                if i != j and a[i] + a[j] == num:

                    found = True  # Am găsit o pereche care dă suma

                    break  # Ieșim din bucla internă dacă am găsit o pereche

            if found:

                break  # Ieșim din bucla externă dacă am găsit o pereche

        # Dacă nu am găsit o pereche pentru num, returnăm 0

        if not found:

            return 0

    # Dacă toate numerele din b au fost găsite ca sumă a două numere din a, returnăm 1

    return 1

# Exemplu de utilizare:

a = [1, 2, 3, 4, 5]

b = [3, 6, 9]

result = FAB(a, len(a), b, len(b))

print(result)  # Afișează 1 sau 0 în funcție de rezultatul verificării