金条切割
题号:NC286222
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

相信你一定接触过下面这个脑筋急转弯:
工人为老板打工,工作七天可以获得一块金子,工人每天可以分得一点金子,老板必须每天发金子,不能多给,也不能少给,把这个金子切两刀,就可以每天给工人发工资,请问怎么切?
解题思路:可以将分金子的过程作一个等比数列1:2:4:……
解:两刀可以将金子分成三份,1/7,2/7,4/7
工作第一天把1/7分给工人
工作第二天把2/7分给工人,并要回1/7那块金子,工人有2/7的金子
工作第三天 把1/7给工人 工人有3/7金子
工作第四天 把前两块金子要回,给工人4/7的金子  工人有4/7的金子
工作第五天把1/7分给工人 工人有5/7的金子
工作第六天把2/7分给工人,并要回1/7那块金子,工人有6/7的金子
工作第七天 把1/7给工人 工人有完整的金子

那么现在小灰灰计划考察小蓝一个类似的问题。

小灰灰总共会提出 t 个问题,第 i 个问题给出两个参数 len_im_i,代表小蓝有一块包含 len_i 个单位的金条,她需要支付工人接下来 m_i 天的工资,要求是工人每天手中能够增加 1 个单位的金条(也就是说允许工人归还金条,进行“找零”操作)

对于每个问题,小蓝需要回答至少需要切割金条多少次才能够支付工人接下来 m_i 天的工资,使得第 j 天时工人手上能够具有 j 个单位的金条。

输入描述:

第一行一个正整数 t,代表问题个数。

接下来 t 行,第 i 行包含两个空格分隔的整数 len_im_i

保证:
1 \le t \le 10^5
2 \le len_i \le 10^9
1 \le m_i \le len_i

输出描述:

输出共 t 行,第 i 行输出一个整数代表第 i 个问题的答案。
示例1

输入

复制
4
2 1
7 7
9 7
14 10

输出

复制
1
2
3
3