794. 血型判断

单点时限: 2.0 sec

内存限制: 512 MB

ABO血型系统是人类最早认识也是最为重要的血型系统,与人类输血时发生的溶血反应密切相关,具有重要的临床意义。该血型系统是由用ABO标记的等位基因决定。每个人的血型里有两个被称为ABO的等位基因。ABO 3种等位基因有6个可能的组合,每个组合决定一个人的ABO血型:

等位基因组合 ABO血型
AA A
AB AB
AO A
BB B
BO B
OO O

除了ABO血型之外,人类还有另一个血型系统就是Rh血型系统。Rh血型系统的等位基因分别用字符+-表示阳性和阴性。每个人的血型里有两个等位基因表示血液中的Rh 因子。

等位基因组合 Rh血型
++ Rh + (Rh阳性)
+- Rh + (Rh阳性)
-- Rh - (Rh阴性)

一个人的血型是由ABO型和Rh因子结合在一起表示的。例如:A+ (表示A型,Rh阳性),AB-(表示AB型,Rh阴性),O-(表示O型,Rh阴性)。

血型是通过遗传获得的。每个生理上的父母贡献一个ABO等位基因(随机地从他们自己的两个等位基因中挑选一个)和一个Rh等位基因给他们的孩子。

假如,父母双方的血型都是A-,则他们的孩子的血型可能是A-O-

A-血型的等位基因 A-血型的等位基因 孩子可能的血型
AA- - AA- - AA- -(A-),AO- -(A-),OO- -(O-)
AO- - AO- -

如果父母双方的血型为A+B+,那么他们的孩子的血型可以是任何一种。

A+血型的等位基因 B+血型的等位基因 孩子可能的血型
AA++ BB++ AB++(AB+),AO++(A+),AB+-(AB+),AO+-(A+),BO++(B+),OO++(O+),BO+-(B+),OO+-(O+),AB- -(AB-),AO- -(A-),BO- -(B-),OO- -(O-)
AO++ BO++
AA+- BB+-
AO+- BO+-

现给定父母双方的血型,要求确定孩子的可能血型集合,或者给定父母中某一方和孩子的血型,要求确定父母另一方的可能血型集合(可能为空集)。

本题的给分方式比较特殊,请认真阅读输入输出和提示中的给分说明。

输入格式

第一行包含一个正整数 $T$ 表示数据组数,在样例中 $T = 5$,我们保证在所有不包括样例的数据中 $T = 100$。

之后 $T$ 行每行包含三个字符串,分别表示父亲的血型、母亲血型和孩子的血型。

对于待确定的血型用问号?表示。

字符串之间用一个空格分隔,不包含其他多余字符。

输出格式

你需要输出 $T$ 行,在一行中输出父亲、母亲和孩子的血型,中间用一个空分分隔。

如果父母中某一方没有一个可能的血型,则对应输出impossible,如果父母或孩子有多种可能的血型,则输出所有可能的血型集合,并以一个花括号将所有可能的血型括起来。花括号中的血型的顺序按字典序升序排列,中间用一个逗号分隔。

你的输出中的第 $i$ 行应该严格对应为输入顺序第 $i$ 个问题,任何多余的字符都有可能这个问题被判定为错误。

样例

Input
5
O+ O- ?
AB+ ? O+
A+ B+ ?
? O+ O-
O- O- ?
Output
O+ O- {O+,O-}
AB+ impossible O+
A+ B+ {A+,A-,AB+,AB-,B+,B-,O+,O-}
{A+,A-,B+,B-,O+,O-} O+ O-
O- O- O-

提示

本题将会测试样例和一组测试数据,虽然样例不计分,但请确保你的程序能够通过样例。

对于测试数据共 $T = 100$ 个问题,你答对的数量 $N$ 与最终得分 $S$ 的关系由下式。

$$S = \begin{cases}
\lfloor \frac{N^2}{105} \rfloor & (N<100) \
100 & ( N = 100 )
\end{cases}$$

再次提醒每行严格对应,否则可能影响评分。

178 人解决,269 人已尝试。

227 份提交通过,共有 843 份提交。

3.5 EMB 奖励。

创建: 6 年,7 月前.

修改: 1 年,8 月前.

最后提交: 5 月,2 周前.

来源: N/A

题目标签