3850.统计结果等于K的序列数目难度困难问题描述给你一个整数数组nums和一个整数k。从初始值val1开始从左到右处理nums。在每个下标i处你必须恰好选择以下操作之一将val乘以nums[i]。将val除以nums[i]。保持val不变。在处理完所有元素后当且仅当val的最终有理数值恰好等于k时才认为val等于k。返回生成valk的不同选择序列的数量。注意除法是有理数除法精确除法而不是整数除法。例如2/41/2。示例1:输入:nums[2,3,2],k6输出:2解释:以下2个不同的选择序列导致valk序列 对nums[0]的操作 对nums[1]的操作 对nums[2]的操作 最终val1 乘法val1*22 乘法val2*36 保持val不变 62 保持val不变 乘法val1*33 乘法val3*26 6示例2:输入:nums[4,6,3],k2输出:2解释:以下2个不同的选择序列导致valk序列 对nums[0]的操作 对nums[1]的操作 对nums[2]的操作 最终val1 乘法val1*44 除法val4/62/3 乘法val(2/3)*32 22 保持val不变 乘法val1*66 除法val6/32 2示例3:输入:nums[1,5],k1输出:3解释:以下3个不同的选择序列导致valk序列 对nums[0]的操作 对nums[1]的操作 最终val1 乘法val1*11 保持val不变 12 除法val1/11 保持val不变 13 保持val不变 保持val不变 1提示:1nums.length191nums[i]61k10**15问题分析对于元素个数为n的整数序列nums其元素是固定不变的生成valk的不同选择序列实际上是对这些元素使用*、/和保持不变形成各种操作序列为此约定对于*、/和保持不变三种操作对应使用字符*、/和.来表示。对整数序列nums中每一个元素进行操作首先应找出对各种元素进行可能操作的序列然后再来判断这些操作结果是不是等于k如果等于k则统计valk的记数器记数并输出这种操作序列最后再把记数器的值输出即可。程序如下#对于n个元素的数组每个元素都要进行三种处理*/.中的一种处理(其中.表示保持不变共有多少种处理排列组合 def get_all_list(n): if n 1: return [., /, *] else: b get_all_list(n - 1) t [] for i in b: c . i t.append(c) c / i t.append(c) c * i t.append(c) return t #对于一次处理返回处理结果s表示一次处理如*3、/2或者.5等等val表示处理结果 def analysis_str(s,val): if s[0].: return val else: valeval(str(val)s) return val #根据nums数组和操作符s生成操作序列 def create_operate_array(nums,s): tlist(zip(s,nums)) clist(i[0]str(i[1]) for i in t) return c #检查操作序列的操作结果是否等k def check_operate_array_result(operate_array,k): m[] n[] for i in operate_array: if i[0]*: m.append(i) else: n.append(i) m.extend(n) val1 for i in m: valanalysis_str(i,val) return valk #主程序 numseval(input(pls input nums)) kint(input(pls input k)) nlen(nums) operate_arrayget_all_list(n) c0 for i in operate_array: val1 operate_number_array create_operate_array(nums,i) if check_operate_array_result(operate_number_array, k): print(操作序列,operate_number_array) c 1 print(不同选择序列数量为,c)运行实例一pls input nums[2,3,4,5,6]pls input k12操作序列 [.2, *3, *4, .5, .6]操作序列 [*2, .3, .4, .5, *6]操作序列 [/2, .3, *4, .5, *6]不同选择序列数量为 3运行实例二pls input nums[1,1,5]pls input k1操作序列 [.1, .1, .5]操作序列 [/1, .1, .5]操作序列 [*1, .1, .5]操作序列 [.1, /1, .5]操作序列 [/1, /1, .5]操作序列 [*1, /1, .5]操作序列 [.1, *1, .5]操作序列 [/1, *1, .5]操作序列 [*1, *1, .5]不同选择序列数量为 9