Bird
Raised Fist0
DSA Goprogramming~5 mins

Fast Exponentiation Power in Log N in DSA Go - 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 repeatedly squaring the base and using the binary representation of the exponent, achieving O(log n) time complexity instead of O(n).
Click to reveal answer
beginner
Why does Fast Exponentiation run in O(log n) time?
Because it splits the exponent by half at each step using exponent / 2, so the number of steps grows logarithmically with the exponent size.
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 squaring.
Click to reveal answer
beginner
Show the Go code snippet for Fast Exponentiation function signature.
func fastPower(base int, exponent int) int { /* implementation */ }
Click to reveal answer
beginner
What is the output of fastPower(2, 10)?
1024, because 2^10 = 1024.
Click to reveal answer
What is the time complexity of Fast Exponentiation?
AO(n^2)
BO(n)
CO(log n)
DO(1)
In Fast Exponentiation, if exponent is even, what is the next step?
AMultiply result by base and reduce exponent by 1
BSquare the base and halve the exponent
CReturn 1 immediately
DAdd 1 to the exponent
What does fastPower(3, 0) return?
A0
B3
CError
D1
Which of these is NOT a benefit of Fast Exponentiation?
AWorks only for positive exponents
BUses less memory than naive method
CReduces multiplication steps
DFaster calculation for large exponents
What is the first step if exponent is odd in Fast Exponentiation?
AMultiply result by base
BSquare the base
CDivide exponent by 2
DReturn base
Explain how Fast Exponentiation reduces the number of multiplications compared to the naive method.
Think about how splitting the exponent in half helps.
You got /4 concepts.
    Write the steps to compute 2^13 using Fast Exponentiation by hand.
    Use the binary form of 13 (1101) to guide your steps.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main advantage of using fast exponentiation (power in log n) over the simple repeated multiplication method?
      easy
      A. It reduces the number of multiplications from n to log n
      B. It uses less memory by storing all intermediate powers
      C. It works only for even powers
      D. It avoids multiplication completely

      Solution

      1. Step 1: Understand simple exponentiation

        Simple method multiplies the base by itself n times, so it takes n multiplications.
      2. Step 2: Understand fast exponentiation

        Fast exponentiation uses repeated squaring, reducing multiplications to about log n times.
      3. Final Answer:

        It reduces the number of multiplications from n to log n -> Option A
      4. Quick Check:

        Fast exponentiation = fewer multiplications [OK]
      Hint: Fast exponentiation cuts steps from n to log n [OK]
      Common Mistakes:
      • Thinking it only works for even powers
      • Confusing memory use with speed
      • Believing it avoids multiplication
      2. Which of the following Go function signatures correctly represents a fast exponentiation function that calculates base^exp (integer power)?
      easy
      A. func fastPower(base float64, exp int) float64
      B. func fastPower(base int, exp float64) int
      C. func fastPower(base int, exp int) int
      D. func fastPower(base int, exp int) float64

      Solution

      1. Step 1: Identify parameter types for integer power

        Base and exponent should be integers for integer power calculation.
      2. Step 2: Check return type

        Return type should be int to match integer power result.
      3. Final Answer:

        func fastPower(base int, exp int) int -> Option C
      4. Quick Check:

        Integer base and exponent with int return [OK]
      Hint: Use int for base, exponent, and return for integer powers [OK]
      Common Mistakes:
      • Using float64 for exponent when integer is needed
      • Returning float64 instead of int
      • Mixing base and exponent types
      3. What is the output of the following Go code snippet?
      func fastPower(base int, exp int) int {
          if exp == 0 {
              return 1
          }
          half := fastPower(base, exp/2)
          if exp%2 == 0 {
              return half * half
          } else {
              return half * half * base
          }
      }
      
      fmt.Println(fastPower(2, 5))
      medium
      A. 10
      B. 32
      C. 25
      D. 16

      Solution

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

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

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

        32 -> Option B
      4. Quick Check:

        2^5 = 32 [OK]
      Hint: Remember 2^5 = 32; fastPower uses recursion [OK]
      Common Mistakes:
      • Confusing multiplication order
      • Forgetting to multiply by base for odd exponent
      • Miscomputing base cases
      4. The following Go code for fast exponentiation has a bug. What is the bug?
      func fastPower(base int, exp int) int {
          if exp == 0 {
              return 0
          }
          half := fastPower(base, exp/2)
          if exp%2 == 0 {
              return half * half
          } else {
              return half * half * base
          }
      }
      medium
      A. Function does not handle negative exponents
      B. Missing multiplication by base for even exponents
      C. Incorrect integer division for exp/2
      D. Base case returns 0 instead of 1

      Solution

      1. Step 1: Check base case for exponent 0

        Exponent 0 means power is 1, but code returns 0, which is incorrect.
      2. Step 2: Verify other parts

        Multiplication and division logic is correct; negative exponent handling is not required here.
      3. Final Answer:

        Base case returns 0 instead of 1 -> Option D
      4. Quick Check:

        Power of 0 exponent = 1 [OK]
      Hint: Base case for exp=0 must return 1 [OK]
      Common Mistakes:
      • Returning 0 for exp=0 base case
      • Ignoring negative exponent cases
      • Misplacing multiplication logic
      5. You want to compute (3^13) mod 7 efficiently using fast exponentiation in Go. Which modification is needed in the fastPower function to correctly compute this without overflow?
      hard
      A. Add modulo operation after each multiplication to keep numbers small
      B. Use float64 type for base and exponent to handle large numbers
      C. Multiply only once at the end after all recursion completes
      D. Increase the base to base*mod to avoid overflow

      Solution

      1. Step 1: Understand modular exponentiation

        To avoid overflow and keep numbers small, apply modulo after each multiplication.
      2. Step 2: Modify fastPower to include modulo

        Insert modulo operation after multiplying halves and base to keep intermediate results within mod.
      3. Final Answer:

        Add modulo operation after each multiplication to keep numbers small -> Option A
      4. Quick Check:

        Modulo after multiplication prevents overflow [OK]
      Hint: Apply modulo after every multiplication step [OK]
      Common Mistakes:
      • Delaying modulo until end causes overflow
      • Using float64 instead of int causes precision loss
      • Multiplying base by mod increases value incorrectly
      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