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?

(A) XY = ab

(B) (res ∗ a)Y = (res ∗ X)b

(C) XY = res ∗ ab

(D) XY = (res ∗ a)b