#CF2082B. 向下取整或向上取整
向下取整或向上取整
B. 向下取整或向上取整
每次测试的时间限制:1 秒
内存限制:512 MB
Ecrade 有一个整数 (x)。有两种操作:
- 将 (x) 替换为 (\left\lfloor \frac{x}{2} \right\rfloor),其中 (\left\lfloor \frac{x}{2} \right\rfloor) 是小于等于 (\frac{x}{2}) 的最大整数(向下取整)。
- 将 (x) 替换为 (\left\lceil \frac{x}{2} \right\rceil),其中 (\left\lceil \frac{x}{2} \right\rceil) 是大于等于 (\frac{x}{2}) 的最小整数(向上取整)。
Ecrade 将会恰好执行 (n) 次第一种操作和 (m) 次第二种操作,操作的顺序可以任意安排。
他想知道,经过 (n + m) 次操作后,(x) 可能的最小值和最大值分别是多少。
不过这个问题似乎有点难,所以请你来帮帮他!
输入
每个测试点包含多个测试用例。
第一行包含一个整数 (t)((1 \le t \le 10^4)),表示测试用例的数量。
接下来每个测试用例一行,包含三个整数 (x, n, m)((0 \le x, n, m \le 10^9))。
输出
对于每个测试用例,在一行中输出两个整数,分别表示经过 (n + m) 次操作后 (x) 可能的最小值和最大值。
示例
输入:
5
12 1 2
12 1 1
12 0 0
12 1000000000 1000000000
706636307 0 3
输出:
1 2
3 3
12 12
0 0
88329539 88329539
提示
为简单起见,我们称第一种操作为 操作 1(向下取整),第二种操作为 操作 2(向上取整)。
-
第一个测试用例:
若依次执行:(12 \xrightarrow{\text{操作 2}} 6 \xrightarrow{\text{操作 2}} 3 \xrightarrow{\text{操作 1}} 1),得到最小值 (1)。
若依次执行:(12 \xrightarrow{\text{操作 2}} 6 \xrightarrow{\text{操作 1}} 3 \xrightarrow{\text{操作 2}} 2),得到最大值 (2)。 -
第二个测试用例:
无论顺序如何,结果都是 (3)。 -
第三个测试用例:
没有操作,结果保持为 (12)。 -
第四个测试用例:
操作次数非常多,最终会归零。 -
第五个测试用例:
只做向上取整操作,最终结果是固定的。