探险家小扣终于来到了万灵之树前,挑战最后的谜题。
已知小扣拥有足够数量的链接节点和 n
颗幻境宝石,gem[i]
表示第 i
颗宝石的数值。现在小扣需要使用这些链接节点和宝石组合成一颗二叉树,其组装规则为:
2
个子节点;能量首先进入根节点,而后将按如下规则进行移动和记录:
1
;9
,并回到当前节点的父节点(若存在)。如果最终记下的数依序连接成一个整数 num
,满足 ,则视为解开谜题。
请问有多少种二叉树的组装方案,可以使得最终记录下的数字可以解开谜题
注意:
示例 1:
输入:
gem = [2,3]
p = 100000007
target = 11391299
输出:
1
解释: 包含
2
个叶节点的结构只有一种。 假设 B、C 节点的值分别为 3、2,对应 target 为 11391299,如下图所示。 11391299 % 100000007 = 11391299,满足条件; 假设 B、C 节点的值分别为 2、3,对应 target 为 11291399; 11291399 % 100000007 = 11291399,不满足条件; 因此只存在 1 种方案,返回 1
示例 2:
输入:
gem = [3,21,3]
p = 7
target = 5
输出:
4
解释: 包含
3
个叶节点树结构有两种,列举如下: 满足条件的组合有四种情况: 当结构为下图(1)时:叶子节点的值为 [3,3,21] 或 [3,3,21],得到的整数为11139139912199
。 当结构为下图(2)时:叶子节点的值为 [21,3,3] 或 [21,3,3],得到的整数为11219113913999
。
提示:
1 <= gem.length <= 9
0 <= gem[i] <= 10^9
1 <= p <= 10^9
,保证 为素数。0 <= target < p
gem.length == 9
的用例