Bird
Raised Fist0
DSA Pythonprogramming~10 mins

Fast Exponentiation Power in Log N in DSA Python - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to multiply the result by base when exponent is odd.

DSA Python
def fast_power(base, exponent):
    result = 1
    while exponent > 0:
        if exponent % 2 == 1:
            result = result * [1]
        base = base * base
        exponent = exponent // 2
    return result
Drag options to blanks, or click blank then click option'
A1
Bexponent
Cresult
Dbase
Attempts:
3 left
💡 Hint
Common Mistakes
Multiplying by exponent instead of base.
Multiplying by result itself causing wrong calculations.
2fill in blank
medium

Complete the code to update the exponent by dividing it by 2 using integer division.

DSA Python
def fast_power(base, exponent):
    result = 1
    while exponent > 0:
        if exponent % 2 == 1:
            result = result * base
        base = base * base
        exponent = [1]
    return result
Drag options to blanks, or click blank then click option'
Aexponent % 2
Bexponent / 2
Cexponent // 2
Dexponent - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using normal division (/) which returns float.
Using modulo (%) which gives remainder, not division.
3fill in blank
hard

Fix the error in the base update step to correctly square the base.

DSA Python
def fast_power(base, exponent):
    result = 1
    while exponent > 0:
        if exponent % 2 == 1:
            result = result * base
        base = base [1] base
        exponent = exponent // 2
    return result
Drag options to blanks, or click blank then click option'
A*
B+
C-
D//
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' which adds instead of multiplies.
Using '-' or '//' which are incorrect for squaring.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps numbers to their powers of 2 for numbers less than 5.

DSA Python
powers = {x: 2[1]x for x in range(5) if x [2] 5}
Drag options to blanks, or click blank then click option'
A**
B<
C>
D//
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' instead of '**' for power.
Using '>' instead of '<' in the condition.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps uppercase letters to their ASCII codes if the code is greater than 65.

DSA Python
ascii_map = [1]: ord([2]) for [3] in 'ABCDEF' if ord([2]) > 65}
Drag options to blanks, or click blank then click option'
Aletter
Dchar
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names causing errors.
Not matching variable names in keys and ord() calls.

Practice

(1/5)
1. What is the main advantage of using Fast Exponentiation to calculate a^b compared to the simple repeated multiplication?
easy
A. It works only for positive integers
B. It uses less memory than repeated multiplication
C. It reduces the time complexity from O(b) to O(log b)
D. It avoids using multiplication altogether

Solution

  1. Step 1: Understand repeated multiplication complexity

    Calculating a^b by multiplying a by itself b times takes O(b) steps.
  2. Step 2: Analyze fast exponentiation approach

    Fast exponentiation uses the idea of squaring and halving the exponent, reducing steps to O(log b).
  3. Final Answer:

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

    Fast exponentiation = O(log b) [OK]
Hint: Remember: halve exponent each step for log speed [OK]
Common Mistakes:
  • Thinking it avoids multiplication
  • Confusing memory use with speed
  • Assuming it only works for positive exponents
2. Which of the following is the correct base case for a recursive fast exponentiation function power(a, b) that calculates a^b?
easy
A. if b == 0: return 1
B. if a == 0: return 0
C. if b == 1: return 0
D. if a == 1: return b

Solution

  1. Step 1: Recall mathematical rule for exponent zero

    Any number to the power 0 equals 1, so power(a, 0) should return 1.
  2. Step 2: Check options for correct base case

    if b == 0: return 1 matches this rule: if b == 0: return 1.
  3. Final Answer:

    if b == 0: return 1 -> Option A
  4. Quick Check:

    Base case b=0 returns 1 [OK]
Hint: Base case: exponent zero returns 1 [OK]
Common Mistakes:
  • Returning 0 when exponent is 1
  • Confusing base and exponent in conditions
  • Returning b instead of 1 for base case
3. What is the output of the following Python code?
def fast_power(a, b):
    if b == 0:
        return 1
    half = fast_power(a, b // 2)
    if b % 2 == 0:
        return half * half
    else:
        return half * half * a

print(fast_power(2, 5))
medium
A. 32
B. 10
C. 25
D. 16

Solution

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

    fast_power(2,5) calls fast_power(2,2), which calls fast_power(2,1), then fast_power(2,0) returns 1.
  2. Step 2: Calculate values bottom-up

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

    32 -> Option A
  4. Quick Check:

    2^5 = 32 [OK]
Hint: Remember: odd exponent multiplies extra base [OK]
Common Mistakes:
  • Confusing multiplication order
  • Forgetting to multiply by base when exponent is odd
  • Incorrect base case handling
4. The following code attempts to implement fast exponentiation but has a bug. What is the bug?
def fast_power(a, b):
    if b == 0:
        return 1
    half = fast_power(a, b // 2)
    if b % 2 == 1:
        return half * half
    else:
        return half * half * a

print(fast_power(3, 3))
medium
A. Function does not handle negative exponents
B. Base case should return 0 instead of 1
C. Multiplication order is incorrect
D. The condition for odd exponent is reversed

Solution

  1. Step 1: Analyze the condition for odd exponent

    The code checks if b % 2 == 1 but returns half * half which is for even exponent.
  2. Step 2: Identify correct logic for odd exponent

    For odd exponent, it should return half * half * a. The conditions are swapped.
  3. Final Answer:

    The condition for odd exponent is reversed -> Option D
  4. Quick Check:

    Odd exponent must multiply extra base [OK]
Hint: Odd exponent means multiply extra base factor [OK]
Common Mistakes:
  • Swapping odd/even conditions
  • Wrong base case return value
  • Ignoring negative exponent cases
5. You want to compute 3^1000 mod 1000000007 efficiently using fast exponentiation. Which of the following modifications is necessary to the standard fast exponentiation algorithm to handle this?
hard
A. Convert exponent to binary string before calculation
B. Add modulo operation after each multiplication to keep numbers small
C. Increase recursion depth limit to handle large exponent
D. Use floating point arithmetic to handle large numbers

Solution

  1. Step 1: Understand the problem with large powers

    Calculating 3^1000 directly results in a huge number that can cause overflow or slow computation.
  2. Step 2: Apply modulo at each multiplication step

    To keep numbers manageable and get correct modulo result, apply modulo after every multiplication.
  3. Final Answer:

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

    Modulo after multiplication keeps numbers small [OK]
Hint: Apply modulo after every multiplication step [OK]
Common Mistakes:
  • Using floating point causing precision errors
  • Not applying modulo inside recursion
  • Trying to convert exponent to string unnecessarily
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