#P11013. 益智游戏

益智游戏

题目背景

Q\verb|Q| 开发了一款智力游戏,游戏设备由 55 个编号为 151~5 的可感知触碰的显示屏和发射塑料子弹打击显示屏的玩具枪组成。游戏开始时,编号为 11 的显示屏会随机从 +-*/% 这五个字符(分别对应加、减、乘、除、模这五种运算)中选择一个显示,其他 44 个显示屏会随机从 090~9 这十个数字中选择一个显示(可能会有一些显示屏显示的数字相同)。

游戏会给出一个目标整数 KK,游戏玩家需要按照一定的策略多次发射子弹打击显示屏,可知将先后射击的显示屏的显示内容依次拼接起来会构成一个计算表达式,如果计算表达式的结果是目标整数 KK,则挑战成功。

例如,某次游戏 55 个显示屏显示内容依次是 +3826,如果游戏者依次射击显示屏的序号是 3,1,5,2\verb|3,1,5,2| ,则会构成一个计算表达式 8+63\verb|8+63| ,表达式计算结果是 71\verb|71|

需要特别注意的是,要遵守以下游戏规则:

  1. 表示运算符号的第一个显示屏可以多次射击且至少要射击一次。如果第一个显示屏没有被射击,会被判定挑战失败;
  2. 四个显示数字的显示屏最多只能射击一次,也可以不射击。如果某个显示数字的显示屏被多次射击,会被判定挑战失败;
  3. 要保证拼接而成的内容是一个规范的计算表达式(至少有一个运算符号且不少于两个整数,且运算符号不能出现在开始和结束处),否则会被判定挑战失败。例如产生的内容 34\verb|34|+125\verb|+125|6/\verb|6/|12-3-\verb|12-3-|6*8*9*\verb|6*8*9*|,都不是规范的计算表达式,都会被判定挑战失败;
  4. 连续射击两个有数字的显示屏会产生一个两位整数,连续射击三个有数字的显示屏会产生一个三位整数,但如果产生的两位数或三位数高位有多余的 00(例如 0909068068007007),则是一个不合法的整数,会被判定挑战失败。例如此情况产生的表达式 05*2\verb|05*2|8+063\verb|8+063|007-5\verb|007-5|,都会被判定挑战失败;
  5. 如果是除法运算或模运算,要保证表达式的每次除法或模运算的除数不能是 00,否则会被判定挑战失败;
  6. 如果是除法运算,要保证表达式的每次除法都能整除,否则会被判定挑战失败。

题目描述

给定 NN 次游戏目标整数 KK 和 五个显示屏的显示内容,统计每次游戏一共有多少种通过挑战的射击方案。

输入格式

11 行是一个正整数 NN

接下来有 NN 行,第 ii 行是第 ii 次游戏的相关信息,第一个数据是目标整数 KK,接着是五个显示屏的显示内容。每行数据之间用一个空格隔开。

输出格式

NN 行,每行一个整数,第 ii 行就是第 ii 次游戏通过挑战的射击方案数。

输入输出样例

2
24 / 4 1 4 6
4 + 1 1 1 1
2
24

说明/提示

对于样例 11 的第一次游戏,仅有下面两种射击方案挑战成功:

  1. 依次射击序号为 3,2,4,1,5\verb|3,2,4,1,5| 的显示屏,构成表达式 144/6\verb|144/6|,结果为目标整数 2424,挑战成功;
  2. 依次射击序号为 3,4,2,1,5\verb|3,4,2,1,5| 的显示屏,构成表达式 144/6\verb|144/6|,结果为目标整数 2424,挑战成功。

对于样例 11 的第二次游戏,可知 1 1 1 1\verb|1 1 1 1| 的全排列的每一种情况都对应了一种方案,一共有 2424 种方案。

👀️ 对于100%100\% 的数据,N1000,0K9000N \leq 1000,0 \leq K \leq 9000