1144 打字的猴子
有一个特殊的键盘,上面有n个按键。一个猴子用这个键盘打字,每一秒钟打出其中任何1个字母的概率是1/n,让他无限打下去,可以打出任何文学作品。给出按键的数量n和一个字符串,求猴子打出这个串所需时间的平均期望是多少?例如:2个按键的键盘,打出aa的期望是6秒,而打出ab的期望是4秒。
输入
第1行:1个数N,表示按键的数量。(2 <= N <= 26)。
第2行:一个字符串S(S的长度 <= 30000)。
输出
输出时间期望(结果会是超过Int64的大数)。
输入样例
2
aa
输出样例
6
解析:
记dp[i]为打出前i个字符的期望时间,要打出前i+1个字符需要先打出前i个字符,而下一个字符打对的概率只有1 /n ,而打错字符会使状态从i退回到i之前的某个状态,用kmp计算所有打错子符后会退到的状态,根据方程计算即可。
放代码:
#include<cstdio>
#include<iostream>
#incl