Skip to content
QuizMaker logoQuizMaker
Activity
DSA Course: Interview Patterns and Problem Solving
Module 15: Math & Number Theory
Best Time to Buy and Sell Stock: Greedy Pattern
Maximum Subarray: Kadane Pattern
Move Zeroes: Two pointers Pattern
Contains Duplicate: Set Pattern
Valid Anagram: Frequency map Pattern
Longest Substring Without Repeating Characters: Sliding window Pattern
Valid Palindrome: Two pointers Pattern
Longest Palindromic Substring: Expand around center Pattern
Group Anagrams: Hash key Pattern
Binary Search: Classic search Pattern
Search Insert Position: Lower bound Pattern
First Bad Version: Predicate search Pattern
Search in Rotated Sorted Array: Rotated search Pattern
Find Minimum in Rotated Sorted Array: Rotated minimum Pattern
Valid Parentheses: Stack matching Pattern
Min Stack: Auxiliary stack Pattern
Daily Temperatures: Monotonic stack Pattern
Next Greater Element I: Monotonic stack Pattern
Evaluate Reverse Polish Notation: Stack evaluation Pattern
Reverse Linked List: Pointer reversal Pattern
Merge Two Sorted Lists: Dummy node Pattern
Linked List Cycle: Fast and slow pointers Pattern
Middle of the Linked List: Fast and slow pointers Pattern
Remove Nth Node From End: Two pointers Pattern
Binary Tree Traversals: DFS recursion Pattern
Maximum Depth of Binary Tree: Height recursion Pattern
Binary Tree Level Order Traversal: BFS queue Pattern
Validate Binary Search Tree: Range bounds Pattern
Lowest Common Ancestor: Recursive split Pattern
Connected Components: Adjacency DFS Pattern
Number of Islands: Grid DFS Pattern
Flood Fill: Boundary DFS Pattern
Clone Graph: Hash Map DFS Pattern
Course Schedule: Topological Sort Pattern
Union Find Components: Disjoint Set Pattern
Shortest Path in Unweighted Graph: BFS Distance Pattern
Climbing Stairs: Fibonacci DP Pattern
House Robber: Pick or Skip DP Pattern
Coin Change: Minimum Coins DP Pattern
Longest Increasing Subsequence: Binary Search DP Pattern
Longest Common Subsequence: 2D DP Pattern
0/1 Knapsack: Capacity DP Pattern
Longest Consecutive Sequence: Hash Set Pattern
Subarray Sum Equals K: Prefix Sum Hashmap Pattern
First Unique Character: Frequency Map Pattern
Find Duplicates: Frequency Map Pattern
Ransom Note: Character Availability Pattern
Sort Colors: Dutch National Flag Pattern
Next Permutation: Pivot and Suffix Reversal Pattern
Merge Intervals: Sort and Sweep Pattern
Find First and Last Position: Boundary Binary Search Pattern
Search a 2D Matrix: Flattened Binary Search Pattern
Subsets: Pick or Skip Recursion Pattern
Generate Parentheses: Valid State Backtracking Pattern
Combination Sum: Reuse Choice Backtracking Pattern
N-Queens: Constraint Backtracking Pattern
Word Search: Grid Backtracking Pattern
Kth Largest Element: Size-K Min-Heap Pattern
Top K Frequent Elements: Frequency Heap Pattern
Merge K Sorted Lists: Min-Heap Multiway Merge Pattern
Median Finder: Two Heaps Pattern
Task Scheduler: Greedy Max-Heap Pattern
Jump Game: Farthest Reach Greedy Pattern
Gas Station: Greedy Reset Pattern
Non-overlapping Intervals: Earliest End Greedy Pattern
Minimum Arrows to Burst Balloons: Interval End Greedy Pattern
Partition Labels: Last Occurrence Greedy Pattern
Single Number: XOR Cancellation Pattern
Power of Two: n and n-1 Pattern
Number of 1 Bits: Brian Kernighan Pattern
Single Number III: Rightmost Set Bit Pattern
XOR From 1 to N: Modulo Cycle Pattern
Prime Check: Square Root Trial Division Pattern
Sieve of Eratosthenes: Prime Marking Pattern
GCD: Euclidean Remainder Pattern
Binary Exponentiation: Fast Power Pattern
Modular Inverse: Extended Euclid Pattern
Implement Trie: Prefix Tree Pattern
Longest Common Prefix: Single Branch Trie Pattern
LRU Cache: Hash Map Plus Recency List Pattern
Segment Tree: Range Sum Query Pattern
Fenwick Tree: Binary Indexed Prefix Sum Pattern
CONTENTS

Modular Inverse: Extended Euclid Pattern

Find x such that a times x is congruent to 1 modulo m.

DSA Course: Interview Patterns and Problem Solving
Module 15: Math & Number Theory
dsa
math-number-theory
+1
May 29, 2026
22
A

Learning Outcome

After this lesson, you should be able to find a modular inverse when gcd(a,m) is 1 and reject cases where it does not exist.

Problem Statement

Given integers a and m, return the modular inverse of a modulo m, or -1 if it does not exist.

InputOutputWhy
a = 3, m = 75

3

  • 5 = 15, and 15 mod 7 is 1.

Brute Force Approach

Try every x from 1 to m

  • 1 and check whether a * x modulo m equals 1. This is linear in m.

Optimized Approach

Use Extended Euclid to solve ax + my = gcd(a,m). If gcd is 1, normalize x into the range 0 to m

Exact Pseudocode

egcd(a, b):
  if b == 0:
    return (a, 1, 0)
  g, x1, y1 = egcd(b, a % b)
  return (g, y1, x1 - (a // b) * y1)

g, x, y = egcd(a, m)
if g is not 1:
  return -1
return (x % m + m) % m

Reference Code

class Solution:
    def modInverse(self, a, m):
        def egcd(x, y):
            if y == 0:
                return x, 1, 0
            g, x1, y1 = egcd(y, x % y)
            return g, y1, x1 - (x // y) * y1

        g, x, _ = egcd(a, m)
        if g != 1:
            return -1
        return (x % m + m) % m

Sample Dry Run

StepStateResult
Equation3x + 7y = 1need coefficient x
Euclid7 = 2*3 + 1gcd is 1
Back substitute

1 = 7

  • 2*3
x = -2
Normalize-2 mod 7 = 5inverse is 5

Complexity

MeasureValueReason
TimeO(log min(a,m))Extended Euclid follows the Euclidean remainder depth.
SpaceO(log min(a,m))The recursive version uses call stack space.

Edge Cases

  • If gcd(a,m) is not 1, no modular inverse exists.
  • The coefficient x can be negative and must be normalized.
  • Fermat inverse needs prime modulus, but Extended Euclid works for any coprime modulus.

Interview Checklist

  • Compute gcd and coefficients with Extended Euclid.
  • Return -1 when gcd is not 1.
  • Normalize x using (x mod m + m) mod m.

FAQs

When does a modular inverse exist?

It exists exactly when a and m are coprime, meaning their gcd is 1.

Why normalize x?

Extended Euclid may return a negative coefficient, but modular answers are usually reported from 0 to m

What is the core pattern?

Extended Euclidean coefficients.

Share this article

Share on TwitterShare on LinkedInShare on FacebookShare on WhatsAppShare on Email

Test your knowledge

Take a quick quiz based on this chapter.

hardDSA Course
Modular Inverse - Extended Euclid Pattern Practice Quiz
5 questions8 min

0 comments

Please login to comment.
No comments yet.
Lesson 5 of 5 in Module 15: Math & Number Theory
Previous in Module 15: Math & Number Theory
Binary Exponentiation: Fast Power Pattern
Next section: Module 16: Trie & Advanced Data Structures
Implement Trie: Prefix Tree Pattern
Module 16: Trie & Advanced Data Structures
Back to DSA Course: Interview Patterns and Problem Solving
Back to moduleCategories