#19243. 孟德尔的花园

孟德尔的花园

经过我们的一系列探讨与严谨的修正,这道结合了孟德尔遗传定律独立事件概率计算的跨学科题目已经完全成熟。为了避免浮点数精度的“蝴蝶效应”,我们将输出要求严格限定为保留 2 位小数。


[OI 题库] 孟德尔的花园 (Mendel's Garden)

题目背景

“在这些杂乱的数据中,我听到了数学的韵律。每一朵花的颜色,每一颗豆子的形状,都是概率波坍缩的结果。” —— 格雷戈尔·孟德尔

在现代遗传学中,生物的性状由**基因(Gene)**控制。基因通常成对存在,我们用字母来表示:

  1. 等位基因
    • 显性基因:用大写字母表示(如 A)。
    • 隐性基因:用小写字母表示(如 a)。
  2. 表现型规则
    • 只要基因对中存在一个显性基因(如 AAAa),生物体就表现出显性性状
    • 只有当两个基因都是隐性时(如 aa),生物体才表现出隐性性状

根据孟德尔自由组合定律:控制不同性状的基因(如 A/aB/b)在遗传时互不干扰,独立分配。这意味着我们可以分别计算每一对基因杂交的概率,最后将它们相乘。

题目描述

给定两个亲本豌豆的基因型,以及你需要预测的子代目标表现型。 请计算:子代恰好表现出目标性状的概率是多少?

假设我们需要考察 NN 对独立的性状。

  • 亲本基因型:由长度为 2N2N 的字符串给出。每两个字符代表一对基因。
    • 例如 N=2N=2,字符串 AaBB 表示第一对基因是 Aa,第二对是 BB
  • 目标表现型:由长度为 NN 的字符串给出。每一个字符代表对子代该性状的期望。
    • 如果第 ii 个字符是大写(如 A),表示希望子代在第 ii 对性状上表现为显性
    • 如果第 ii 个字符是小写(如 a),表示希望子代在第 ii 对性状上表现为隐性

输入格式

第一行一个整数 NN,表示性状的数量。 第二行一个字符串 S1S_1(长度为 2N2N),表示亲本 1 的基因型。 第三行一个字符串 S2S_2(长度为 2N2N),表示亲本 2 的基因型。 第四行一个字符串 TT(长度为 NN),表示目标表现型。

输出格式

一个浮点数,表示子代符合目标表现型的概率。 请保留 2 位小数(四舍五入)。

样例数据

样例 1 (经典的 3:1)

1
Aa
Aa
A
0.75

(解析:Aa x Aa。子代基因型可能为 AA, Aa, Aa, aa。其中 AA, Aa, Aa 表现为显性(A)。概率 3/4 = 0.75)

样例 2 (自由组合定律)

2
YyRr
YyRr
Yr
0.19

(解析:这是经典的黄色圆粒豌豆杂交。 第一对 Yy x Yy,目标 Y(显性),概率 0.75。 第二对 Rr x Rr,目标 r(隐性),概率 0.25。 总概率 = 0.75×0.25=0.18750.75 \times 0.25 = 0.1875。 保留两位小数四舍五入后为 0.19。)

样例 3 (不可能事件)

2
AAbb
aaBB
Ab
0.00

(解析: 第一对 AAbb x aaBB 的第一部分:AA x aa \to 子代全是 Aa(显性),符合目标 A,概率 1.0。 第二对 AAbb x aaBB 的第二部分:bb x BB \to 子代全是 Bb(显性),但目标是 b(隐性),不符合!概率 0.0。 总概率 = 1.0×0.0=01.0 \times 0.0 = 0。)

数据范围

  • 1N1001 \le N \le 100
  • 字符串仅包含英文字母。
  • 输入保证基因型字符串遵循成对书写规范(如 Aa, BB 等),不会出现非法字符。