A
UBB · Informatică
228 Raspunsuri multiple

Se consideră algoritmul generate(arr, c, n, k, idx, st, prod), unde arr este un vector ce conține n elemente naturale, c este un vector utilizat pentru generarea combinărilor, prod reprezintă produsul elementelor curente din combinare, iar k și idx sunt două variabile de tip întreg, cel mult 10510^5.

Algoritm 1

Algorithm G(num)
  low ← 0, high ← num
  result ← 0
  While low ≤ high execute
    mid ← (low + high) / 2
    If mid * mid = num then
      Return mid
    Else If mid * mid < num then
      low ← mid + 1
      result ← mid
    Else
      high ← mid - 1
    EndIf
  EndWhile
  Return result
EndAlgorithm

Algoritm 2

Algorithm generate(arr, c, n, k, idx, st, prod)
  If idx = k then
    r ← G(prod)
    If r * r = prod then
      For i ← 0, k − 1 execute
        Write c[i], " "
      EndFor
      Write newline
    EndIf
    Return
  EndIf
  For i ← st, n − 1 execute
    c[idx] ← arr[i]
    generate(arr, c, n, k, idx + 1, i + 1, prod * arr[i])
  EndFor
EndAlgorithm

Care dintre următoarele afirmații sunt adevărate pentru algoritmul prezentat?

11 / 22