3627 – FAB
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