#P15625. [ICPC 2022 Jakarta R] Sharing Bread
[ICPC 2022 Jakarta R] Sharing Bread
说明
有 个烤面包机,从左到右编号为 到 。初始时,每个烤面包机中都有一片面包。有 个人,编号为 到 ,他们依次在烤面包机中寻找面包,从第 个人开始,然后是第 个人,依此类推。
第 个人从烤面包机 ()开始寻找,并一直向右寻找,直到找到一个装有面包的烤面包机。换句话说,第 个人寻找的是满足 且烤面包机 中含有面包的最小 。如果这样的烤面包机存在,那么第 个人将从该烤面包机中取走面包并离开;之后该烤面包机变为空。如果这样的烤面包机不存在,那么第 个人将空手离开。
一个起始序列 被称为公平的,如果对于所有 ,第 个人从烤面包机 开始寻找,并且都没有空手离开。在所有 个可能的起始序列中,请计算有多少个是公平的,结果对 取模。
输入格式
输入在一行中包含两个整数 (),分别表示烤面包机的数量和人的数量。
输出格式
在一行中输出一个整数,表示公平起始序列的数量对 取模的结果。
4 3
50
10 1
10
2 2
3
提示
样例输入/输出 #1 的解释
一个可能的公平起始序列是 。首先,第 个人从烤面包机 开始寻找,并取走烤面包机 中的面包。接着,第 个人从烤面包机 开始寻找,并取走烤面包机 中的面包。最后,第 个人将从烤面包机 开始寻找,但此时烤面包机 是空的。第 个人移动到烤面包机 ,并取走烤面包机 中的面包。由于每个人都得到了一片面包,因此起始序列 是公平的。
其他公平起始序列的例子包括 、、 和 。一些不公平的起始序列包括 、、 和 。
样例输入/输出 #2 的解释
所有起始序列都是公平的。
样例输入/输出 #3 的解释
唯一不公平的起始序列是 。第 个人从烤面包机 开始寻找,并取走烤面包机 中的面包。接着,第 个人从烤面包机 开始寻找,但此时烤面包机 是空的。由于烤面包机 的右侧没有更多的烤面包机,第 个人将空手离开。
翻译由 DeepSeek 完成
京公网安备 11011102002149号