#zHSXybttg060605. 1652:牡牛和牝牛
1652:牡牛和牝牛
好的,我把这道题整理成标准的题面格式,补充样例解释、数据范围、时空限制:
题目描述
原题来自:USACO 2009 Feb. Silver
牡(mǔ),畜父也。牝(pìn),畜母也。——《说文解字》
约翰要带 只牛去参加集会里的展示活动,这些牛可以是牡牛(公牛),也可以是牝牛(母牛)。牛们要站成一排,但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少要有 只牝牛。
请计算一共有多少种排队的方法,所有牡牛可以看成是相同的,所有牝牛也一样,答案对 取模。
输入格式
一行,输入两个整数 和 。
输出格式
一个整数,表示排队的方法数。
样例
样例输入 1
4 2
样例输出 1
6
样例解释 1
,表示任意两只牡牛之间至少有 只牝牛。
所有可能的排法如下(用0表示牝牛,1表示牡牛):
- 0000
- 1000
- 0100
- 0010
- 0001
- 1001
总共 种。
数据范围
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据,,。
时空限制
- 时间:
- 内存:
提示
假设有 只牡牛,那么它们之间至少有 只牝牛,可以把每只牡牛和它后面紧跟着的 只牝牛(最后一只牡牛后面可以没有牝牛)看作一组,使用组合数学或递推计算。也可递推:设 表示前 头牛的合法方案数,转移时考虑最后一头是牝牛还是牡牛。