A
UBB · Informatică
194 Raspunsuri multiple

Se consideră algoritmul f(e), unde e este un număr natural nenul (1 ≤ e ≤ 10^6) și algoritmul g(arr, a, b), unde a și b sunt numere naturale nenule (1 ≤ a, b ≤ 10^3) și arr este un vector de n numere naturale nenule (1 ≤ arr[1], arr[2], ..., arr[n] ≤ 10^6). Operatorul & este operatorul AND pe biți (ex: 6&1 = 110&001 = 000 = 0, 2&7 = 010&111 = 010 = 2).

Algoritm 1

Algorithm f(e)
  k ← 0
  While e > 0 execute
    k ← k + (e & 1)
    e ← e DIV 2
  EndWhile
  Return k MOD 2 = 1
EndAlgorithm

Algoritm 2

Algorithm g(arr, a, b)
  If a = b then
    Return f(arr[a])
  EndIf
  c ← (a + b) DIV 2
  Return g(arr, a, c) AND g(arr, c+1, b)
EndAlgorithm

Pentru ce valori ale numărului n și ale vectorului arr apelul g(arr, 1, n) returnează True?

7 / 30