186
Se consideră algoritmul spirala(n, sens), unde n este un număr natural (). Algoritmul utilizează operatorul << (bitwise left shift), echivalent cu înmulțirea cu . Cifre(x) returnează numărul de cifre al lui x.
Algoritm 1
Algorithm spirala(n, sens) If n < 10 then Return n EndIf u ← n MOD 10 p ← n While p ≥ 10 execute p ← p DIV 10 EndWhile temp ← n DIV 10 mij ← temp MOD (1 << (Cifre(temp) − 1)) If sens = 1 then rez ← u * 10 + p Else rez ← p * 10 + u EndIf If mij = 0 then Return rez EndIf Return rez + spirala(mij, 1 − sens) * 100 EndAlgorithm
Algoritm 2
Algorithm Cifre(x) If x = 0 then Return 0 EndIf Return 1 + Cifre(x DIV 10) EndAlgorithm
Pentru apelul spirala(67812, 1), ce valoare va returna algoritmul?
36 / 37