德州扑克
题号:NC201843
时间限制:C/C++/Rust/Pascal 6秒,其他语言12秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

最近沉迷德州扑克,于是就出了一道有关德州扑克的题。
一副去掉大小王的扑克牌包含 种不同的数值:,它们的大小从左到右依次递增。扑克牌中有四种不同的花色,用 表示,每一种花色都有 张牌,分别对应每一种数值。在德州扑克中,我们只需要考虑这 张牌。
一副手牌包含 张扑克牌,他们可能会形成若干种牌型,按照从大到小的顺序依次为:
  1. 同花顺:花色相同的顺子(顺子的定义见下方),例如同花色的
  2. 四条:存在四张大小相同的牌,例如任意花色的
  3. 葫芦:有三张牌大小相同,另外两张牌大小相同,例如任意花色的
  4. 同花:五张牌花色相同,例如同花色的
  5. 顺子:五张牌大小连续,例如任意花色的 ,。特殊地, 也是一个顺子(但是 不是)。因此一共有 种不同数值的顺子,它们的第一张牌分别是
  6. 三条:存在三张大小相同的牌,例如任意花色的
  7. 两对:存在两个大小不同的对子(一个对子是两张大小一样的牌),例如任意花色的
  8. 对子:存在两张大小相同的牌,例如任意花色的
  9. 高牌:不满足以上任何一个牌型的手牌都是高牌。
一副手牌可能同时满足很多个不同的牌型,这个时候我们会把最大的那个牌型作为这幅手牌的牌型。
我们可以通过如下方式来比较两幅手牌的大小:
  • 如果两幅手牌牌型不同,那么牌型较大的手牌更大。
  • 如果两幅手牌都是顺子或者都是同花顺,那么按照顺子第一张牌的大小排序,从小到大分别为
  • ,即 是最小的顺子, 是最大的顺子。
  • 否则,我们按照(出现次数,数值)的双关键字从大到小把这五张牌排序,例如 排序后就是 排序后是 T,T,A,K,2。
  • 比较两幅牌的字典序。
注意,牌的花色只影响第一步比较牌型,并不影响后面两步的比大小。
下面是一些例子:
  • 相同花色的 大于相同花色的
  • 相同花色的 大于相同花色的
  • 任意花色的 大于任意花色的
  • 任意花色的 大于任意花色的
在德州扑克中,一个人的场面包含 7 张扑克牌,这 7 张牌可以形成种不同的手牌,而这个人场面的大小等于这些手牌中最大的那一个。
现在两个人单挑:
  • 首先这两个人分别从一副(去掉大小王)的扑克牌中抽了 张牌。
  • 剩下的 张牌被完全均匀地打乱(即 种顺序等概率出现)。
  • 最前面的 张牌公开被公开。
  • 每个人的场面由自己的 张牌加上公开的 张牌组成,两个人场面较大的那一方赢。
注意平局是可能发生的,例如两个人的手牌分别是花色 和花色  的 ,公共牌是花色   的 ,那么两个人的场面都是 的同花顺,因此大小相同。
现在给出两个人的初始手牌,你需要计算两个人每个人获胜的概率以及平局的概率。

输入描述:

第一行输入一个整数  表示数据组数。
对于每组数据,输入包括四行,其中每行包含两个整数
,描述了一张牌。其中前两张是第一个人的手牌,后两张是第二个人的手牌。
输入保证这四张牌两两不同。

输出描述:

对于每组数据输出三行,分别表示第一个人获胜的概率,平局的概率和第二个人获胜的概率。概率以最简分数的形式输出:例如  就输出  就输出  就输出 
示例1

输入

复制
3
0 A
1 A
2 A
3 A
0 2
1 2
2 2
3 2
0 A
1 Q
2 K
2 J

输出

复制
18605/856152
409471/428076
18605/856152
8917/428076
205121/214038
8917/428076
1000357/1712304
1891/428076
704383/1712304