#arc055b. [arc055_b]せんべい

[arc055_b]せんべい

问题描述

AtCoDeer是一只喜欢米饼的鹿。现在,AtCoDeer注意到了高滨君的传闻,他会给AtCoDeer N片编号为1至N的米饼。由于编号大的米饼更大且更有价值,所以AtCoDeer决定一定要吃掉第N片米饼。然而,由于饱腹的限制,AtCoDeer只能吃最多K片米饼。

高滨君会事先将N片米饼重新排列,逐一按顺序给AtCoDeer。当AtCoDeer收到第i(1≤i≤N)片时,他会立即决定是否吃掉这片米饼。然而,如果他已经吃掉了K片米饼,那么他就不能再吃了。如果不吃的话,高滨君会吃掉这片米饼,因此AtCoDeer无法在之后吃到这片米饼。AtCoDeer看不出米饼的编号,但可以比较已经看到的(包括吃过的)所有米饼的大小。

高滨君给出米饼的顺序是随机的(从N!个排列中等概率选择),AtCoDeer事先不知道顺序。请计算在AtCoDeer采取最优策略的情况下,他最终能吃到编号为N的米饼的概率。

约束条件

  • 1KN10001≤K≤N≤1000

输入

输入从标准输入中获取,具有以下格式。

NN KK

输出

输出AtCoDeer在采取最优策略的情况下,能够最终吃到米饼NN的概率。输出的绝对误差或相对误差应小于或等于10610^{-6}


示例输入1


3 1

示例输出1


0.500000000000

以下策略是最优的:

  • 不吃第一片。
  • 如果第二片比第一片大,则吃第二片。
  • 如果还可以吃(即没有吃第二片),则吃第三片。

那么,当米饼的顺序是1、3、2和2、1、3以及2、3、1时,都能吃到米饼3,所以概率是3/3! = 1/2。


示例输入2


17 17

示例输出2


1.000000000000

由于所有的米饼都能被吃掉,所以概率是1。


示例输入3


1000 10

示例输出3


0.984898795563