豪豪哥刚来到家中时是一只力量为 11、精力有 m 点的小猫。在家中,一共有 n 个物品,其中编号为 1 的物品重量为 0,编号为 2 的物品重量为 1,以此类推。若豪豪哥的力量大于或等于物品的重量,它便可以将物品打翻并且自身力量增加 1 点,但是前提是豪豪哥有足够的精力去打翻这个物品,否则豪豪哥将累死(精力为 0 时并不会累死)。注意,每个物品都会消耗豪豪哥的精力。现在豪豪哥想知道如果它总是尽力去打翻物品(要么累死,要么打翻所有物品),那么它的能力值的期望最终是多少。由于小数点比较麻烦,因此你只需要输出期望 n! 关于 1000000007 取模后的值就可以了。
输入格式
第一行有两个数 n,m,表示有 n 个物品和豪豪哥的初始精力(1≤n≤500000,1≤m≤109)。接下来一行有 n 个数,ai 表示编号为 i 的物品消耗的豪豪哥的精力(0≤ai≤m)。
输出格式
输出期望 n! 关于 1000000007 取模后的值就可以了。
样例 1
输入样例
5 4 1 1 1 1 1
输出样例
104
以上是这道初赛填充程序题目的题面,题目给的解题思路是
解题思路:
设fi为至少打翻i个物品的方案数,那么恰好打翻i个物品的方案数为fi−fi+1,打翻物品的期望就为(f1−f2+2∗(f2−f3))+...+n∗(fn−fn+1)/n!,化简即为∑i=1nfi
不能理解这个是怎么推出来的