#BSCSPJ0005B. 算式密码锁(password)

算式密码锁(password)

题目描述

CC 给他的自行车安装了一把密码锁,但他总是常常忘记密码。不过小 CC 自信自己的计算能力,于是他自己打造了一把特殊的密码锁。

这把密码锁共有 66 位,与常规的密码锁相同,每一位是一个数字,但不同的是,这把密码锁上的数字不是 090~9 的连续排列,而是一些特定的数字或符号:

  • 13561、3、5、6 号转盘上,每个位都是一个数字;
  • 22 号转盘上,每个位都是一个运算符,共有加(++)、减(-)、乘(*)、除(//44 种可能;
  • 44 号转盘上,每个位都是一个关系符,共有大于(>>)、等于(==)、小于(<<33 种可能。

每个键盘上的数字字符有 nn 个,这样,在每次旋转转动键盘后,从不同角度看,这些数字和字符可以组成 nn 个不同的算式。对于任意转动后的结果而言,这 nn 个算式中有的正确,有的错误。而小 CC 的目的就是找到密码锁可以在各种组合下组成正确的算式个数最多的方式开始。

凭借小 CC 出色的计算能力,可以切换并算出他所有的情况下能组成正确的算式式最多的密码组合。现在你手边也有密码锁,想要尝试将其打开,但你擅于计算的能力不够,所以打算写个程序来帮助他。

需要注意的是,式子中含有零也可被视为正确,如 1+1=02,22=001+1=02,2−2=00 等;除法是整数除法,即除法的结果需为整数,如 9/4=029/4=02 这样的式子被视为错误;除以 00 的式子被视为错误,如 1/0=001/0=00 等。

输入格式

输入多行。

  • 第一行, 一个正整数 nn,表示密码锁的算式个数,同时也是 nn 个键盘上的数字或符号个数。
  • 接下来的 66 行,每行 11 个长度为 nn 的字符串 sis_i ,表示从左到右在第 ii 号键盘上的数字或符号(从键盘的起始位置按顺时针顺序排列)。其中:
    • s1,s3,s5,s6s_1,s_3,s_5,s_6 中的字符为数字 (0123456789)(0123456789)
    • s2s_2 中的字符为运算符 (+/)(+∗−/)
    • s4s_4 中的字符为关系符 (><=)(><=)

输出格式

输出一行。

一行输出一个非负整数,表示任意旋转密码锁后,正确的算式数量的最大值。

样例 #1

样例输入 #1

2
23
*+
34
><
12
05

样例输出 #1

2

样例 #2

样例输入 #2

10
0123456789
+-*/+-+-*/
0123456789
=<=>=<=>=>
0123456789
0123456789

样例输出 #2

5

提示

【样例解释】:

  • 样例 11: 一种转动转盘使得两个算式均成立的方案为:
2+3<25 
3*4>10

【数据范围】:

测试点编号 nn \leq 特殊性质
1 ~ 2 11 ABAB
3 ~ 4 AA
5 ~ 6 BB
7 ~ 9
10 ~ 11 22 ABAB
12 ~ 13 1010
14 ~ 15 AA
16 ~ 17 BB
18 ~ 20
  • 特殊性质 AA 为:s2s_2 中包含字符 ++
  • 特殊性质 BB 为:s4s_4 中包含字符 ==