2014年7月13日,SCABH计划去梦幻之城,那里可是仙境哦。这天清晨,他高高兴兴地来到梦幻之城,准备痛痛快快玩一天。可是,刚进门就被一个仙女守卫守着。她说:“想来不是不行,但要过一个数学关。”SCABH想,他数学还不错,于是爽快地答应了。
仙女问:“你知道C语言吧?”“知道。”SCABH回答。
“你知道C整数表达式何时为真?”“当且仅当关系表达式成立或数值表达式的结果不为零。”
“那就好了。”“不要拐弯抹角,直接切入正题吧。”
“好。这个问题涉及到梦幻表达式。”“什么叫梦幻表达式?”
仙女说,定义如下:
1、梦幻表达式是仅由整数和运算符以及括号组成的。
运算符包括:
+(加号)、-(减号)、*(乘号)、/(整除,相当于PASCAL的DIV)、==(等号,PASCAL使用者较难理解,呵呵~)和新增的运算符=-(负等号,与等号的语法地位相同,当且仅当负等号两边的表达式互为相反数时成立)。
并且符合C语言语法。
2、除了单独一个数外,没有其他正负号。如不允许-(1+2)。单独一个数的正负号不属于运算符,包含在数中。
3、表达式最后一步运算可以是+、-、==或=-,但不能是*或/。
4、表达式的结果必须为真。
5、只能有1个等号和负等号,如(1==1)==(1==1)和(1==1)=-(-1)不合法。如果有等号或负等号,它必须作为最后一步运算。
6、(1+2)+3和1+(2+3)被视作不同的梦幻表达式,因为运算顺序不同。
7、(1+2)+3和1+2+3被视作同一个梦幻表达式,因为运算顺序相同。
“哦,明白了。”SCABH答道。
“那么好,等下仙盘托出,里面有N个整数(2<=N<=60)排成一个有序的数列,不能变换顺序,求在里面添加运算符(不能使用直接连接,如给出1,2,3不存在类如12+3这样的表达式)共可以组成多少个不同的梦幻表达式。”
“这……”SCABH懵了。本来他的数学还不错,但想着今天的惊喜,他沉迷得算不出了。
这个仙女还是善良的,她说:“算了,回答不出不要紧,你拨打这个电话就可以得出答案了。这可是高人的电话哦!”
突然,你的电话响了,原来你就是那个高人。那么,电脑前的你能帮他解答吗?
样例说明:
由1、2、3共可组成16个梦幻表达式,分别如下:
1、1+2+3
2、1+(2+3)
3、1+2*3
4、1+2/3
5、1-2+3
6、1-(2+3)
7、1-2-3
8、1-(2-3)
9、1+2*3
10、1-2/3
11、1*2+3
12、1*2-3
13、1/2+3
14、1/2-3
15、1+2==3
16、1=-2-3
第1行:N,整数的个数。
第2至N+1行:这N个整数,它们在-2^31至+2^31-1范围内。
第1行:梦幻表达式的个数。

Error [ 更改语言 ] Language
讨论