给你一个整数数组 nums 和一个整数 k。
从初始值 val = 1 开始,从左到右处理 nums。在每个下标 i 处,你必须 恰好选择 以下操作之一:
val 乘以 nums[i]。val 除以 nums[i]。val 不变。在处理完所有元素后,当且仅当 val 的最终有理数值 恰好 等于 k 时,才认为 val 等于 k。
返回生成 val == k 的 不同 选择序列的数量。
注意:除法是有理数除法(精确除法),而不是整数除法。例如,2 / 4 = 1 / 2。
示例 1:
输入: nums = [2,3,2], k = 6
输出: 2
解释:
以下 2 个不同的选择序列导致 val == k:
| 序列 | 对 nums[0] 的操作 | 对 nums[1] 的操作 | 对 nums[2] 的操作 | 最终 val |
|---|---|---|---|---|
| 1 | 乘法:val = 1 * 2 = 2 | 乘法:val = 2 * 3 = 6 | 保持 val 不变 | 6 |
| 2 | 保持 val 不变 | 乘法:val = 1 * 3 = 3 | 乘法:val = 3 * 2 = 6 | 6 |
示例 2:
输入: nums = [4,6,3], k = 2
输出: 2
解释:
以下 2 个不同的选择序列导致 val == k:
| 序列 | 对 nums[0] 的操作 | 对 nums[1] 的操作 | 对 nums[2] 的操作 | 最终 val |
|---|---|---|---|---|
| 1 | 乘法:val = 1 * 4 = 4 | 除法:val = 4 / 6 = 2 / 3 | 乘法:val = (2 / 3) * 3 = 2 | 2 |
| 2 | 保持 val 不变 | 乘法:val = 1 * 6 = 6 | 除法:val = 6 / 3 = 2 | 2 |
示例 3:
输入: nums = [1,5], k = 1
输出: 3
解释:
以下 3 个不同的选择序列导致 val == k:
| 序列 | 对 nums[0] 的操作 | 对 nums[1] 的操作 | 最终 val |
|---|---|---|---|
| 1 | 乘法:val = 1 * 1 = 1 | 保持 val 不变 | 1 |
| 2 | 除法:val = 1 / 1 = 1 | 保持 val 不变 | 1 |
| 3 | 保持 val 不变 | 保持 val 不变 | 1 |
提示:
1 <= nums.length <= 191 <= nums[i] <= 61 <= k <= 1015