题号:NC238694
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
在游戏《炉石传说》中,双方玩家拥有若干个随从,一个随从的基本属性有攻击力和生命值,一个攻击力为

,生命值为

的随从
)
,我们可以用数对
)
表示。
考虑两个随从
)
和
)
,它们相互攻击之后,生命值均会扣除对方的攻击力,即第一个随从变为
)
,第二个随从变为
)
。如果一个随从的生命值降至

或

以下,则它会死亡。在本题中,随从

攻击随从

和随从

攻击随从

是等价的。
现在你的对手控制着

个随从,第

个随从为
)
。你一开始不控制任何随从,且你能控制的随从数目上限为

(也就是说你不能同时控制着超过

个存活的随从)。
你现在反复执行如下操作,直至你的随从数目达到上限:召唤一个
)
的随从,使其等概率攻击一个随机的,仍然存活的敌方随从(显然,如果该
)
的随从在攻击后仍存活,才会占用你的随从上限)。
现在你希望知道,你对手的第一个随从
)
最终的存活概率。由于一些原因,你希望对所有的

输出答案。
输入描述:
第一行
。
接下来
行,每行两个数字代表
。
%5Ctimes%20b_i%7D)
输出描述:
一行
个数字,第
个数字代表随从上限为
的时候,你对手第一个随从的存活概率,答案模
输出。
示例2
输出
复制
974849 4630529 12855809 413869739 779998325 683459045 116757848 620087160 407844574 249503409