5472 - Consanguine Calculations
每个人的血型都有两个标记,这两个标记被叫做ABO血型系统的等位基因,每个标记都代表了ABO三个字母之一,因此我们有6种可能的基因组合,而每一种组合都表示了一个特定的ABO血型。
组合 ABO血型
AA A
AB AB
AO A
BB B
BO B
OO O
与之相对应的,每个人同样有两个Rh血型系统的等位基因,而这两个等位基因的标记是+或-。某个人如果是Rh+血型则至少含有一个+基因,而如果是Rh-血型则一定含有两个-基因。
所以一个人的血型是ABO血型系统和Rh血型系统的组合,血型的书写方式是先写ABO血型后写Rh血型。例如A+、AB-、O-。
血型是可以继承的:父母分别贡献一个ABO血型基因和一个Rh血型基因(随机从两个中选择)给他们的孩子。因此父母的2个ABO血型基因和Rh血型基因决定了孩子的血型。比如父母都是A-,则他们的孩子会是A-或O-;而父母是A+和B+时,孩子可以是任意血型。
在本题中,你会得到父母和孩子三者中两者的基因,你需要确定剩下的那个人所有可能的血型组合。
注:我们用大写字母和+-号表示血型,而不是数字。
输入
输入包含若干组数据,每组数据占一行,先是父亲的基因,接着是母亲的基因,最后是孩子的基因,其中一个人的基因用问号代替。输入中空格会在任何地方出现,除了在一个血型中间。
最后一行包含三个用空格隔开的字符E、N、D。
输出
对于每组数据,输出其编号,并按顺序输出父母和孩子的血型。如果没有可行的方案,输出IMPOSSIBLE;如果有多种方案,输出所有可行的方案,方案之间用逗号分隔,并用大括号围住(只有一种方案时不加大括号和逗号)。方案顺序随意。
样例包含多组数据和多种方案,你的输出格式需要与之类似,注意空格出现的位置和字母大小写。
样例
输入
O+ O- ? O+ ? O- AB- AB+ ? AB+ ? O+ O- O- ? E N D
输出
Case 1: O+ O- {O+, O-} Case 2: O+ {A+, A-, B+, B-, O+, O-} O- Case 3: AB- AB+ {A+, A-, B+, B-, AB+, AB-} Case 4: AB+ IMPOSSIBLE O+ Case 5: O- O- O-
提示
数据规模和约定
数据组数≤10。
来源
蓝桥杯