+1 vote
282 views

Consider the following pseudo-code fragment in which an invariant for the loop is “ $m ^*x^k=p^n$ and $k \geq 0$ ” (here, $p$ and $n$ are integer variable that have been initialized):

/* Pre-conditions : $p \geq 1 \wedge n \geq 0$ */

/* Assume that overflow never occurs */

int $x=p$; int $k=n$; int $m=1$;

while $(k < >0)$ {

if (k is odd) then $m=m^*x$;

$x=x^*x$;

$k=\lfloor k/2 \rfloor$;       /* floor$(k/2)$ */

}

Which of the following must be true ar the end of the while loop?

1. $x=p^n$
2. $m=p^n$
3. $p=x^n$
4. $p=m^n$

edited | 282 views

This pseudo code basically represents the exponentiation algorithm. With p as the base and n as the power and the final result is stored in m.

by (41 points)