给你一个长度为 n 的整数数组 nums 和一个整数 p。
如果 nums 的一个 非空子序列 满足以下条件,则称其为 好子序列:
n。p。另给定一个长度为 q 的二维整数数组 queries,其中 queries[i] = [indi, vali] 表示你需要将 nums[indi] 更新为 vali。
在每次查询更新后,判断当前数组中是否存在 任意一个好子序列。
返回一个整数,表示使得数组中存在 好子序列 的查询 次数。
子序列 是指通过删除原序列中的某些元素或不删除任何元素,并且不改变剩余元素相对顺序后得到的序列。
gcd(a, b) 表示 a 和 b 的 最大公约数。
示例 1:
输入: nums = [4,8,12,16], p = 2, queries = [[0,3],[2,6]]
输出: 1
解释:
| i | [indi, vali] | 操作 | 更新后的 nums | 是否存在好子序列 |
|---|---|---|---|---|
| 0 | [0, 3] | 将 nums[0] 更新为 3 | [3, 8, 12, 16] | 否,因为不存在最大公约数恰好为 p = 2 的子序列 |
| 1 | [2, 6] | 将 nums[2] 更新为 6 | [3, 8, 6, 16] | 是,子序列 [8, 6] 的最大公约数恰好为 p = 2 |
因此,答案是 1。
示例 2:
输入: nums = [4,5,7,8], p = 3, queries = [[0,6],[1,9],[2,3]]
输出: 2
解释:
| i | [indi, vali] | 操作 | 更新后的 nums | 是否存在好子序列 |
|---|---|---|---|---|
| 0 | [0, 6] | 将 nums[0] 更新为 6 | [6, 5, 7, 8] | 否,因为不存在最大公约数恰好为 p = 3 的子序列 |
| 1 | [1, 9] | 将 nums[1] 更新为 9 | [6, 9, 7, 8] | 是,子序列 [6, 9] 的最大公约数恰好为 p = 3 |
| 2 | [2, 3] | 将 nums[2] 更新为 3 | [6, 9, 3, 8] | 是,子序列 [6, 9, 3] 的最大公约数恰好为 p = 3 |
因此,答案是 2。
示例 3:
输入: nums = [5,7,9], p = 2, queries = [[1,4],[2,8]]
输出: 0
解释:
| i | [indi, vali] | 操作 | 更新后的 nums | 是否存在好子序列 |
|---|---|---|---|---|
| 0 | [1, 4] | 将 nums[1] 更新为 4 | [5, 4, 9] | 否,因为不存在最大公约数恰好为 p = 2 的子序列 |
| 1 | [2, 8] | 将 nums[2] 更新为 8 | [5, 4, 8] | 否,因为不存在最大公约数恰好为 p = 2 的子序列 |
因此,答案是 0。
提示:
2 <= n == nums.length <= 5 * 1041 <= nums[i] <= 5 * 1041 <= queries.length <= 5 * 104queries[i] = [indi, vali]1 <= vali, p <= 5 * 1040 <= indi <= n - 1