#P6591. 癌症的 DNA 序列模式
癌症的 DNA 序列模式
题目描述
潜在癌症调查中心(ICPC)发现了导致癌症的 DNA 序列模式!我们希望你编写一个计算机程序,近似计算一个随机 DNA 序列匹配给定模式之一的概率。
DNA 序列可以表示为由四个字母组成的字符串:'A'、'G'、'C' 和 'T'。DNA 模式是由相同的四个字母加上 '?' 组成的字符串。如果 DNA 模式与长度相同的 DNA 序列匹配,当且仅当模式中的每个字符要么是 '?',要么与 DNA 序列中对应位置的字符相同。例如,模式 "AC?" 匹配 DNA 序列 "ACA"、"ACG"、"ACC" 和 "ACT"。
你的任务是编写一个程序,给定一组相同长度的 DNA 模式,计算长度相同的均匀随机 DNA 序列匹配给定模式之一的概率。允许有最多 的相对误差。
输入
输入由一个测试用例组成,格式如下:
第一行包含两个正整数 和 ,满足 且 。接下来的 行包含 个模式 。每个模式 是一个长度为 的字符串,由字符 'A'、'G'、'C'、'T' 和 '?' 组成。
输出
设 为长度为 的均匀随机 DNA 序列。设 为 匹配至少一个模式 的概率。输出一个实数 ,近似计算 。
当 近似 的相对误差在 以内,即:
则认为输出 是正确的。
可以用带有或不带指数形式表示。例如, 可以表示为 或 。
3 1
AC?
0.0625
6 2
AC??A?
A??A?T
0.0302734375
30 1
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
8.673617379884035e-19
样例解释
在第一个样例中,长度为 的 DNA 序列共有 种。匹配模式 "AC?"
的 DNA 序列有 种,分别是 "ACA"
、"ACG"
、"ACC"
和 "ACT"
。因此,概率为:
任何介于 和 之间的实数都被接受为正确的输出。
正如第三个样例所示,概率可能是一个非常小的实数。注意,0
不是正确的输出,因为 小于精确概率的 。
相关
在以下作业中: