84422 - Collecting Bugs
伊万喜欢收集。与其他人收集邮票、硬币或其他实物不同,他收集的是软件漏洞。每当伊万拿到一个新程序时,他会把所有可能的漏洞分为 n 个类别。他每天恰好发现程序中的一个漏洞,并将相关信息及其类别记录到电子表格中。当他在所有漏洞类别中都发现了漏洞时,他就称这个程序为"令人厌恶的",并将这份电子表格发布到他的主页上,然后彻底忘记这个程序。
两家公司,Macrosoft 和 Microhard 正在激烈竞争。Microhard 想减少 Macrosoft 某个程序的销量。他们雇佣伊万来证明该程序是令人厌恶的。然而,伊万面临一个复杂的问题:这个新程序有 s 个子组件,要在每个子组件中找到所有类型的漏洞,需要花费太长时间才能达到目标。因此伊万和 Microhard 同意使用一个更简单的标准——伊万应该在每个子系统中至少找到一个漏洞,并且在每个类别中至少找到一个漏洞。
Macrosoft 知道这些计划,它想估算伊万称其程序为"令人厌恶的"所需的时间。这很重要,因为公司很快要发布一个新版本,这样它就可以调整计划并更快地发布。没人会对伊万关于过时版本可靠性的意见感兴趣。
程序中发现的任何一个漏洞属于任何类别的概率相等。同样,该漏洞出现在任何给定子系统中的概率也相等。任何特定的漏洞不能同时属于两个不同的类别,也不能同时发生在两个不同的子系统中。程序中的漏洞数量几乎是无限的,因此在某个子系统中发现某个类别的新漏洞的概率,不会因为已经在该子系统中发现了该类别任意数量的漏洞而降低。
请找出伊万将程序命名为"令人厌恶的"所需的平均时间(以伊万的工作天数计)。
输入
输入文件包含两个整数 n 和 s(0 < n, s ≤ 1000)。
输出
输出伊万称该程序为"令人厌恶的"所需工作天数的期望值,精确到小数点后 4 位。
样例
输入
1 2
输出
3.0000
来源
欧洲大学生程序竞赛