Problem1776--短路位置

1776: 短路位置

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

Description

现有26个布尔类型的变量,变量名从"a"到"z"。
给定一个26位整数。该整数的26位数字,从左往右依次表示变量"a"到"z"的值,且每位数字的取值均为0或1。
给定若干个表达式,表达式仅包含这26个变量以及&&、||、!这三个运算符。

每个表达式包含至少一个变量,且一定以一个变量作为开头,以一个变量作为结尾。对其中任意一个变量a,其要么为a,要么为!a。
变量之间由指定格式的字符串间隔开,字符串格式为:"一个空格符+'&&或者||'+一个空格符"。
表达式从左往右计算,且其中的 && 和 ||,两者优先级在本题中相等且均为左结合。! 的优先级则比前两者都要高。
(例如对"a && b || c"这一式子,左结合意味着该式的运算顺序为"((a && b)|| c)")

对每个表达式,请输出使得该表达式第一次发生短路的变量的位置,以及该表达式的值。

Input

输入第一行为一个26位整数,整数的取值与意义如上所述。
接下来若干行,每行包含一个表达式,表达式的内容与计算方式如上所述,表达式长度小于等于一千。
文件以EOF结束。

Output

对自第二行起的每一行表达式,输出为一行,包括两个整数,用一个空格间隔开,按顺序依次为:
1、若从左往右依次给表达式中的变量编号(编号从1开始,依次增加),让该表达式第一次发生短路的变量的编号。若未发生短路,则输出-1。
2、该表达式的值。

Sample Input Copy

10101010101010101010101010
a && b && !c
a && !b || c
a || b && !c
a && b || c

Sample Output Copy

2 0
2 1
1 0
-1 1

HINT

短路求值的知识点请参考《C语言程序设计现代方法》中选择语句这一章的内容。

Source/Category