G-虚数的纸牌
题号:NC200310
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

这次是一个成年男性,他正在玩弄着手上的扑克牌,纸牌在他手中翻飞着,如同空中飞舞的蝴蝶。
「死后居然被计入英灵座,现在居然还被召唤到这里,真是很奇妙啊」他先发言了「我并无任何武艺,但对数学方面略有心得,我即为七骑之中的魔术师(caster)」
「呜」他所说的信息实在太少太少了,我根本没法判别他的真名
「你们能到达这里必是多少有些许智慧的」他直接把17张扑克牌飞了过来。扑克牌如同利刃一般飞来,但并没有故意瞄准我,这也叫没有什么武艺么
「我对赌博很有兴趣,但是这纸牌游戏也只是无趣的记忆游戏。捡起这些纸牌吧。」他从牌堆里面也抽出了17张牌「和我玩一场游戏,赢了就可以过去,输了就永远在这复数的空间里徘徊」
(规则与实际斗地主有出入,请以本题题面为准)
给出17张牌,计算刚开局总共有多少种不同的出牌方案。
牌的种类,顺序(从小到大):
3 4 5 6 7 8 9 0(代表10) J Q K A 2
出牌方式:
单个牌:单张牌,比如:3
对子:两张种类相同的牌,比如:2,2
炸弹:四张种类相同的牌,比如:6,6,6,6
三带一:有两种牌,一种牌有三张,另一种牌有一张,比如:3,3,3,A
三带二:有两种牌,一种牌有三张,另一种牌有两张,比如:3,3,3,A,A
五单顺子:五张连续的单牌,且五张牌种类各不相同。比如:4,5,6,7,8。五单顺子的牌的种类可以包括`2`,比如:J,Q,K,A,2,也是五单顺子。注意:A,2,3,4,5,不是五单顺子,3,4,5,6,6,也不是五单顺子
由于花色的原因,即使是相同种类的牌,也是不同的牌

输入描述:

第一行一个整数T(1<=T<=100),代表T组样例,

对于每组样例,输入一行,每行输入一个仅由{'3', '4', '5', '6', '7', '8', '9', '0', 'J', 'Q', 'K', 'A', '2'}字符组成的字符串str,(|str|==17)。其中|str|代表字符串的长度。

题目保证每种牌最多四张(代表四种花色)

输出描述:

对于每一行输入,输出有多少种不同的出牌方案
示例1

输入

复制
1
AAAA234567890JQKK

输出

复制
105

说明

单个牌:17种,A,A,A,A,2,3,4,5,6,7,8,9,0,J,Q,K,K

对子:7种,AA,AA,AA,AA,AA,AA,KK(注意A的不同)

炸弹:1种,AAAA

三带一:52种

三带二:4种,AAAKK, AAAKK, AAAKK, AAAKK

五单顺子:24种

总共:105种