3627 – FAB

De la Universitas MediaWiki

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