SP10461 IOPC1205 - The magical escape
题目描述
### 题目背景
独裁国家迪斯托皮亚的邪恶国王抓住了一群来自乌托邦的旅行者。国王想要戏弄他们,所以他让他们玩一个小“游戏”。
国王会把每个人都单独关押起来。他在一个单独的房间里放了一个灯泡,它由一个开关控制。初始状态下,灯泡是关闭的。每天,国王会**随机**选一个囚犯带到房间里。他可以看到灯泡是开还是关,并选择是否切换灯泡的状态。这个过程持续进行。
一旦有一个囚犯意识到所有人都至少进过那个特殊的房间一次,他可以向国王传达这个消息,然后国王会释放所有人。然而,如果有人错误地提出这样的要求,所有人都将被处决。在把所有人关起来之前,国王会允许所有囚犯聚在一起并制定一个策略。
通常情况下,这是一个非常恶毒的游戏。然而,在囚犯中有一些可以通过心灵感应进行交流的魔术师。所以他们想出了这个策略。所有魔术师从 $0$ 开始计数。
每当一个**非魔术师**进入房间时,他会执行以下操作:
- 如果他发现灯泡是关闭的,他就会把灯泡打开。
- 如果他发现灯泡已经打开,或者他之前切换过灯泡的状态,他就会使灯泡保持不变。
每当一个**魔术师**进入房间时,他会执行以下操作:
- 如果他是第一次进入房间,他将他的计数器加 $1$,并通过心灵感应将此信息传达给所有其他魔术师,其他魔术师也会更新他们的计数器。
- 如果他发现灯泡已经打开,无论他是否是第一次进入房间,他都会关闭灯泡,并使所有魔术师的计数器加 $1$。
最后,当魔术师的计数器达到囚犯的总人数时,他们宣布所有人至少进过房间一次。**请你找出在宣布之前过去的天数。**
输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。
接下来的 $T$ 行,每行包含两个整数 $n$ 和 $m$,表示囚犯的总人数和魔术师的数量。
输出格式
For each test case, output the expected number of days before the magicians declare that all prisoners have entered the room at least once. The output has to be formatted in the following fashion: #.######E+## That is, one nonzero digit before the decimal point, six digits after the decimal point and two digits for the exponent. See the sample test case for a formatting example.
说明/提示
对于 $100\%$ 的数据,保证 $T \le 100$ 且 $1 \le n \le 10^9$,$1 \le M \le \min(100, N)$。