Medium
Given an integer array nums
and an integer k
, return the number of subarrays of nums
where the least common multiple of the subarray’s elements is k
.
A subarray is a contiguous non-empty sequence of elements within an array.
The least common multiple of an array is the smallest positive integer that is divisible by all the array elements.
Example 1:
Input: nums = [3,6,2,7,1], k = 6
Output: 4
Explanation: The subarrays of nums where 6 is the least common multiple of all the subarray’s elements are:
Example 2:
Input: nums = [3], k = 2
Output: 0
Explanation: There are no subarrays of nums where 2 is the least common multiple of all the subarray’s elements.
Constraints:
1 <= nums.length <= 1000
1 <= nums[i], k <= 1000
class Solution {
fun subarrayLCM(nums: IntArray, k: Int): Int {
var ans = 0
for (i in nums.indices) {
var lcm = nums[i]
for (j in i until nums.size) {
lcm = lcm * nums[j] / gcd(lcm, nums[j])
if (lcm == k) {
ans++
}
if (k % lcm != 0) {
break
}
}
}
return ans
}
private fun gcd(a: Int, b: Int): Int {
return if (b == 0) a else gcd(b, a % b)
}
}