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。

来源

蓝桥杯

时间限制 1 秒
内存限制 256 MB
讨论 统计
上一题 下一题