Bird
Raised Fist0
DSA C++programming~5 mins

Fast Exponentiation Power in Log N in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind Fast Exponentiation (Power) algorithm?
It reduces the number of multiplications by using the property that x^n = (x^(n/2))^2 when n is even, and x^n = x * x^(n-1) when n is odd, thus computing power in O(log n) time.
Click to reveal answer
beginner
Why is Fast Exponentiation faster than the naive method?
Because it uses repeated squaring to halve the exponent at each step, reducing the number of multiplications from n to about log₂(n).
Click to reveal answer
beginner
What is the time complexity of Fast Exponentiation Power algorithm?
O(log n), where n is the exponent.
Click to reveal answer
intermediate
In Fast Exponentiation, what do you do when the exponent is odd?
Multiply the result by the base once, then reduce the exponent by 1 to make it even, and continue with repeated squaring.
Click to reveal answer
intermediate
Show the recursive formula used in Fast Exponentiation.
power(x, n) = power(x, n/2)^2 if n is even; power(x, n) = x * power(x, n-1) if n is odd; power(x, 0) = 1.
Click to reveal answer
What is the time complexity of the naive power calculation method?
AO(n^2)
BO(log n)
CO(n)
DO(1)
In Fast Exponentiation, if the exponent n is even, what is the next step?
AMultiply result by base once
BSquare the result of power(base, n/2)
CAdd 1 to the exponent
DReturn 0
What is the base case for Fast Exponentiation recursion?
Apower(x, 0) = 1
Bpower(x, n) = x^n
Cpower(x, n) = 0
Dpower(x, 1) = x
Which of these is NOT a benefit of Fast Exponentiation?
AFaster computation for large exponents
BReduces multiplications to O(log n)
CCan be implemented recursively or iteratively
DUses less memory than naive method
If you want to compute 2^10 using Fast Exponentiation, how many multiplications approximately are needed?
A4
B5
C10
D1
Explain how Fast Exponentiation reduces the number of multiplications compared to the naive method.
Think about how you can split the power into smaller parts.
You got /4 concepts.
    Write the iterative approach steps for Fast Exponentiation and explain why it is efficient.
    Focus on how the exponent changes each iteration.
    You got /6 concepts.

      Practice

      (1/5)
      1. What is the main advantage of using fast exponentiation (power) algorithm over the simple repeated multiplication method?
      easy
      A. It works only for positive exponents
      B. It reduces the time complexity from O(n) to O(log n)
      C. It uses less memory by storing intermediate results
      D. It avoids using multiplication altogether

      Solution

      1. Step 1: Understand simple exponentiation time

        Simple repeated multiplication takes n multiplications for power n, so O(n) time.
      2. Step 2: Analyze fast exponentiation time

        Fast exponentiation splits power by half each step, reducing steps to about log n, so O(log n) time.
      3. Final Answer:

        It reduces the time complexity from O(n) to O(log n) -> Option B
      4. Quick Check:

        Fast exponentiation = O(log n) [OK]
      Hint: Fast exponentiation halves power each step [OK]
      Common Mistakes:
      • Thinking it avoids multiplication
      • Confusing time complexity with memory usage
      • Assuming it only works for positive exponents
      2. Which of the following is the correct base case for a recursive fast exponentiation function computing x^n?
      easy
      A. if (x == 0) return 0;
      B. if (x == 1) return n;
      C. if (n == 1) return 0;
      D. if (n == 0) return 1;

      Solution

      1. Step 1: Identify base case for exponent zero

        Any number to the power 0 is 1, so if n == 0, return 1.
      2. Step 2: Check other options

        Other options do not correctly represent the base case for power calculation.
      3. Final Answer:

        if (n == 0) return 1; -> Option D
      4. Quick Check:

        Base case n=0 returns 1 [OK]
      Hint: Power zero always returns 1 [OK]
      Common Mistakes:
      • Returning 0 for n=1
      • Confusing base case with input x values
      • Returning n instead of 1 for base case
      3. What is the output of the following C++ code snippet?
      int fastPow(int x, int n) {
          if (n == 0) return 1;
          int half = fastPow(x, n / 2);
          if (n % 2 == 0) return half * half;
          else return half * half * x;
      }
      
      int main() {
          std::cout << fastPow(2, 5);
          return 0;
      }
      medium
      A. 32
      B. 16
      C. 25
      D. 10

      Solution

      1. Step 1: Trace recursive calls for fastPow(2,5)

        fastPow(2,5) calls fastPow(2,2), which calls fastPow(2,1), which calls fastPow(2,0)=1.
      2. Step 2: Calculate values bottom-up

        fastPow(2,1) = 1*1*2=2; fastPow(2,2) = 2*2=4; fastPow(2,5) = 4*4*2=32.
      3. Final Answer:

        32 -> Option A
      4. Quick Check:

        2^5 = 32 [OK]
      Hint: Remember odd powers multiply extra x once [OK]
      Common Mistakes:
      • Calculating 2^5 as 16 by missing odd case
      • Confusing multiplication order
      • Forgetting base case returns 1
      4. The following code attempts to implement fast exponentiation but has a bug. What is the bug?
      int fastPow(int x, int n) {
          if (n == 0) return 1;
          int half = fastPow(x, n / 2);
          if (n % 2 == 0) return half * half;
          else return half * half * n;
      }
      medium
      A. Multiplying by n instead of x in the odd case
      B. Missing base case for n == 1
      C. Using integer division incorrectly
      D. Not handling negative powers

      Solution

      1. Step 1: Check odd power multiplication

        In the odd case, code multiplies by n instead of x, which is incorrect.
      2. Step 2: Confirm correct multiplication

        It should multiply by x to account for the extra factor in odd powers.
      3. Final Answer:

        Multiplying by n instead of x in the odd case -> Option A
      4. Quick Check:

        Odd power multiply by x, not n [OK]
      Hint: Multiply by base x, not exponent n, for odd powers [OK]
      Common Mistakes:
      • Confusing n and x in multiplication
      • Thinking base case missing causes this bug
      • Ignoring negative power handling
      5. You want to compute (3^13) % 7 efficiently using fast exponentiation with modulo. Which of the following code snippets correctly implements this?
      hard
      A. int modPow(int x, int n, int m) { if (n == 0) return 1; int half = modPow(x, n / 2, m); int halfSq = (half * half) % m; if (n % 2 == 0) return (halfSq * x) % m; else return halfSq; }
      B. int modPow(int x, int n, int m) { if (n == 0) return 0; int half = modPow(x, n / 2, m); int halfSq = (half + half) % m; if (n % 2 == 0) return halfSq; else return (halfSq * x) % m; }
      C. int modPow(int x, int n, int m) { if (n == 0) return 1; int half = modPow(x, n / 2, m); int halfSq = (half * half) % m; if (n % 2 == 1) return (halfSq * x) % m; else return halfSq; }
      D. int modPow(int x, int n, int m) { if (n == 1) return x % m; int half = modPow(x, n / 2, m); int halfSq = (half * half) % m; if (n % 2 == 1) return halfSq; else return (halfSq * x) % m; }

      Solution

      1. Step 1: Check base case and modulo usage

        Base case returns 1 for n=0, correct. Multiplications use modulo to avoid overflow.
      2. Step 2: Verify odd and even power handling

        For odd n, multiply halfSq by x modulo m; for even n, return halfSq. int modPow(int x, int n, int m) { if (n == 0) return 1; int half = modPow(x, n / 2, m); int halfSq = (half * half) % m; if (n % 2 == 1) return (halfSq * x) % m; else return halfSq; } matches this logic correctly.
      3. Final Answer:

        code correctly implements fast exponentiation with modulo -> Option C
      4. Quick Check:

        Modulo applied after each multiplication [OK]
      Hint: Apply modulo after every multiplication step [OK]
      Common Mistakes:
      • Returning 0 for base case
      • Using addition instead of multiplication
      • Swapping odd and even cases
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard