#P1267. [ZJOI2013] 抛硬币

[ZJOI2013] 抛硬币

题目描述

有一枚硬币,抛出正面 H\tt H 的概率为 a/ba/b,抛出反面 T\tt T 的概率为 1a/b1-a/b。现在 TT 小朋友开始玩丢硬币的游戏,并且把每次抛出的结果记录下来,正面记为 H\tt H,反面记为T\tt T,于是她得到了一个抛硬币序列 HTHHT\tt HTHHT…。她突然想到一个问题:在抛出正面和反面概率都是 1/21/2 的情况下,要使得抛出的序列出现目标序列 HT\tt HT,期望要抛多少次。然而经过 11 秒的思考以后她发现,若第一次抛出的是 T\tt T,那么还需要期望抛出 HT\tt HT 的次数,如果第一次抛出的是 H\tt H,则期望只需要抛出 T\tt T 的次数,而期望抛出 T\tt T 的次数显然是 22。她设抛出 HT\tt HT 的期望次数是 xx,则得到了方程:

x=1+(1/2x+1/22)x=1+(1/2*x+1/2*2)

解得 x=4x=4,所以抛出 HT\tt HT 的期望次数是 44 次。

她在解决了这个弱化很多的问题以后,开始思考对于一般情况下,抛出正反面的概率不一定相同,且抛出的目标序列不一定为 HT\tt HT 时需要的期望步数。然而经过很长一段时间的苦思冥想仍然无果,于是她开始求助于你。

输入格式

第一行两个数 a,ba,b。意义如题目描述。

接下来 11 行一个只包含 HT 的字符串 S\tt S。表示要抛出的目标序列。

输出格式

输出仅一行 p/qp/q,其中 ppqq 均为正整数且互质,表示抛出目标序列 S\tt S 所需要的期望步数。

注意,若 qq11 时,不省略 /1/1

1 2
HT
4/1

提示

50%50\% 数据 a=1,b=2,s<=20a=1,b=2,|s|<=20

100%100\% 数据 a<b,b<=100,s<=1000a<b,b<=100,|s|<=1000