关注
哎,当时脑子没转过来,没实现那个递归函数,0.4打发了,以下是之后敲出来的,也不知道对不对,帮忙看看😪
import sys
def count_comb(X,Y,m): # X个球分为Y堆,每堆至少m个的组合数量
if X==0 or Y==0 or X<Y*m: # 球/堆为0 或 球不够每堆至少m个
return 0
if Y==1: # 只分一堆的话,只有一种组合可能
return 1
sm = 0
# 分为 1 和 Y-1 两部分,第一部分为i个球,第二部分为X-i个球
# 保证第二部分的每一堆的数量必须大于等于第一部分,否则可能重复
for i in range(m,X//Y+1): # 第一部分最少为m个,最多为X//Y个(再多就不能保证存在满足上述条件的解了)
sm += count_comb(X-i, Y-1, i) #对于每一个i,可能的排列数量由第二部分决定
return sm
while True:
try:
M,N,K = int(raw_input()),int(raw_input()),int(raw_input())
cnt = 0
for num_null in range(0, K-2+1): # 空碗可能0 ~ K-2个,剩下至少鱼碗和肉碗各1个
for num_fish in range(1, K-num_null-1+1): # 鱼碗可能1 ~ K-num_null-1 个,剩下至少1个肉碗
cnt_fish = count_comb(M, num_fish, 1) # M个球分为num_fish堆,每堆至少1个
cnt_meat = count_comb(N, K-num_null-num_fish, 1) # N个球分为K-num_null-num_fish堆,每堆至少1个的组合数量
cnt += cnt_fish*cnt_meat # 在此种碗分配方式下,丸子的组合方式的组合数量
sys.stdout.write(str(cnt%10000)+'\n')
except:break
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛油的搬砖plog #
16111次浏览 81人参与
# 哪些企业的面试体验感最差? #
22786次浏览 222人参与
# 一人一个landing小技巧 #
15310次浏览 294人参与
# 我在牛爱网找对象 #
174596次浏览 1276人参与
# 面试问题记录 #
101226次浏览 1428人参与
# 腾讯音乐求职进展汇总 #
84802次浏览 471人参与
# 2022毕业生求职现身说法 #
82314次浏览 686人参与
# 520告白墙 #
7055次浏览 140人参与
# 找工作的破防时刻 #
16440次浏览 270人参与
# 实习学不到东西怎么办? #
200301次浏览 2080人参与
# 你觉得第一学历对求职有影响吗? #
74629次浏览 544人参与
# 职场吐槽大会 #
195472次浏览 1577人参与
# 微软计划裁员 #
2093次浏览 56人参与
# 贝壳求职进展汇总 #
20378次浏览 144人参与
# 选完offer后,你后悔学本专业吗 #
42282次浏览 221人参与
# 安利/避雷我的专业 #
70632次浏览 502人参与
# 实习生应该准时下班吗 #
210253次浏览 1357人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
26472次浏览 154人参与
# 华子oc时间线 #
1181459次浏览 6256人参与
# 通信硬件知识分享 #
25187次浏览 457人参与