由于 的比赛排名太高了,所以 和 准备联手吊打他。
由于这个 有极其严格的防作弊机制,所以抄对方的答案几乎是不可能的。好在 和 都会 和 ,所以只要他们中另一方把对方的程序翻译一下就行了。可惜他们现在远隔万里,而他们的电脑上又没有聊天工具,所以他们只能使用该 自带的私信功能了。但是比赛期间,私信功能查得很严,所以 只能把简化过的语言程序发给 ,而 需要把这个伪代码转化成正常的高级语言。
现在给出一段以这一种格式编写的程序,请你求出这个程序中每一句话做到的概率是多少。
这个语言只有两种格式,我们定义这个语言的格式为:
xxxxxxxxxx
IF语句的格式:
IF <变量名> <关系符> <数值>
ELSE //当然可以没有else
END IF
赋值语句的格式:
<变量名> = <数值>
或
<变量名> = <变量名>
其中,变量名是一个大写字母,而关系符仅为< = >三种,数值可以为任何绝对值小于等于100的整数,运算对象之间都用一个空格隔开。
我们这样定义一句话被做到的概率:
. 如果这句话不是赋值语句,那么概率没有意义。
. 如果一个 语句可能被做到,那么它将继承上一级概率的 。
. 如果一个 语句必定被做到,那么它将继承上一级概率的 。
. 如果一个 语句中有且仅有一支可能被做到,那么它将继承上一级概率的 ,另一支将不会继承任何概率。
. 如果一个 语句中有一支必定被做到,那么它将继承上一级概率的 ,另一支将不会继承任何概率。
. 如果一个 语句中两支都有可能做到(两者不管谁被做到的概率更大),那么它们将分别继承上一级概率的 。
. 最外层一级的概率为 。
. 变量没有赋值,它的值为一个不确定的数。
. 将一个没有赋值的变量赋值给另一个变量,另一个变量的值也为一个不确定的数。
. 为了简化题目,变量的赋值不对外级的语句产生影响。(重点)
即(答案以注释的形式给出):
xxxxxxxxxx
A = 1 //100%
IF A > 0 THEN
A = 100 //100%
END IF
IF A = 100 THEN
A = 1 //0%
END IF
第一组 的赋值行为并不会对第二组 的赋值行为产生影响。
具体详见样例。
显然,每一组概率的值必定是 的形式,为了防止精度问题,你只需要给出 的值来代替概率。如果概率为 ,则 。
若干行,每行是一个合法的代码行。
对于每一个赋值语句,输出一个 的值( 的含义已经说明)。每行输出一个答案。
xxxxxxxxxx
A = 1
IF A > 0 THEN
A = 100
END IF
IF A = 100 THEN
A = 1
END IF
xxxxxxxxxx
0
0
-1
xxxxxxxxxx
A = 1
IF B > 5 THEN
A = 3
ELSE
A = 5
END IF
IF A = 1 THEN
B = 2
END IF
xxxxxxxxxx
0
1
1
0
xxxxxxxxxx
IF A > 10 THEN
B = 0
END IF
IF A > -1 THEN
B = 1
IF A > -2 THEN
B = 1
ELSE
B = 1
END IF
IF A < -10 THEN
B = 1
ELSE
B = 1
END IF
END IF
xxxxxxxxxx
1
1
1
-1
-1
1
xxxxxxxxxx
IF A = 0 THEN
B = 1
IF C = 0 THEN
D = 1
IF E = 0 THEN
F = 1
IF G = 0 THEN
H = 1
ELSE
H = 2
END IF
ELSE
F = 2
END IF
ELSE
D = 2
END IF
ELSE
B = 2
END IF
xxxxxxxxxx
1
2
3
4
4
3
2
1
对于样例 ,注意逻辑关系可以互相约束。
(例:如果一个程序进入 的分支,那么它之后不会进入 的分支)。
对于 的数据,没有 语句。
对于 的数据,没有 语句。
对于 的数据,为人工随机生成。
对于 的数据,保证程序长度不超过 行,所有数据均为人工生成,并且不存在语法和逻辑错误。