LCM of an Array with Modulo
Problem Description:
Find LCM of N numbers, with modulo M, where for this problem statement M is 1e9 + 7.
Sample Input:
A: [13, 412, 56, 70, 333]
Sample Output:
124848360
Solution Approach:
One thing to notice is that you can not take modulo in between the LCM operation.
For example:
Case 1: When you take modulo in between the LCM operation.
LCM(12, 3, 8) % 10
LCM( LCM(12,3) % 10, 8 ) % 10
LCM( 12 % 10, 8) % 10
LCM( 2, 8 ) % 10
8
Case 2:
LCM(12,3,8) % 10
24 % 10
4
So 4 is the correct answer, that's why we can not approach this problem as suggested by Case 1.
So, to solve it elegantly, we can use prime factorization, for example,
A: [12, 3, 8]
12: 2² * 3¹
3: 3¹
8: 2³
Take max power of each prime number, then multiply it, you will get 2³ * 3¹ = 24
So while multiplying those numbers you can use modulo now.
Sample IO Explanation:
A: [13, 412, 56, 70, 333]
13: 13¹
412: 2² x 103¹
56: 2³ x 7¹
70: 2¹ x 5¹ x 7¹
333: 3² x 37¹
So, LCM = (2³ x 3² x 5¹ x 7¹ x 13¹ x 37¹ x 103¹) % (1e9 + 7) = 124848360
Comments