众所周知,数回惨败于九峰之前,叉同学还有一段黑历史:163点也玩不过九峰
163点的规则如下:从一副去掉大王小王的扑克牌中抽出六张,A,J,Q,K视为1,11,12,13,用这6张牌经过有理数的加减乘除运算(过程中可以出现分数)且每张牌都用到的情况下,如[9,9,9,7,4,7],可以发现(9+9+7)4+97=163或者(9+9+4+9/7)*7=163
在多次163比试惨败于九峰后,叉同学决定写一个打表程序作弊,但是如果按照52张取6张的思维去枚举,方案有20358520种,考虑到花色不同但牌型相同的组合其实是一样的,所以实际上对于算163点来讲,不同性质的牌组会比\tbinom{52}{6}(
6
52
)小很多,但叉哥的数学水平实在垃圾,并不会算去重后的这个数字。
你可以帮他算出来吗?
输入描述:
本题无输入
输出描述:
输出一个数字表示方案数
这个简单。
import random
import itertools
# 一副牌 不带大小王
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
# 抽六张牌放list2里边 可重复抽取
list2 = random.sample(list1, 6)
# 六张排列组合,并去掉重复的组合
list3 = list(set(list(itertools.permutations(list2, 6))))
# 六个数要运算五次
list4 = ['+', '-', '*', '/'] * 5
# 抽取5个运算符号排列组合,并去重
list5 = list(set(list(itertools.permutations(list4, 5))))
n = 0
for i in list3:
a = i[0]
for j in list5:
for k in range(5):
if j[k] == '+':
a += i[k + 1]
elif j[k] == '-':
a -= i[k + 1]
elif j[k] == '*':
a *= i[k + 1]
elif j[k] == '/':
a /= i[k + 1]
if a == 163:
n += 1
a = i[0]
# 输出总方案数
print(n)
\tbinom{52}{6}(
6
52
请问这是个啥?
\tbinom{52}{6}(
6
52
请问这是个啥?