-
The following function computes XY for positive integers X and Y.
int exp (int X, int Y) {
int res = 1, a = X, b = Y;
while (b != 0) {
if (b%2 == 0) {a = a*a; b = b/2;}
else {res = res*a; b = b – 1;}
}
return res;
}
Which one of the following conditions is TRUE before every iteration of the loop?
-
- XY = ab
- (res*a)Y = (res*X)b
- XY = res*ab
- XY = (res*a)b
- XY = ab
Correct Option: C
Before Iteration 1: X^Y= 64 res * (a^b) = 64
Before Iteration 2: X^Y= 64 res * (a^b) = 64
Before Iteration 3: X^Y= 64 res * (a^b) = 64
Hence, option (c) is verify.