#P0788. 双限最大乘积

双限最大乘积

题目描述

小蓝有两个限制数字 s 和 p。

他想选择两个正整数 a 和 b,并且规定 a <= b。如果它们同时满足:

a + b <= s
a * b <= p

那么 (a, b) 就是一组合法数对。

小蓝想知道,在所有合法数对中,a * b 最大可以是多少。

现在有多组询问,请你分别求出答案。

输入格式

第一行输入一个整数 T,表示询问次数。

接下来 T 行,每行输入两个整数 s 和 p。

输出格式

输出 T 行,每行一个整数。

第 i 行表示第 i 个询问中,合法数对的最大乘积。

样例输入

3
10 100
10 20
7 100

样例输出

25
20
12

样例解释

对于第 1 组询问,选择 a = 5, b = 5,有 a + b = 10,a * b = 25。

对于第 2 组询问,选择 a = 2, b = 8,有 a + b = 10,a * b = 16;选择 a = 4, b = 5,有 a + b = 9,a * b = 20,答案为 20。

对于第 3 组询问,选择 a = 3, b = 4,有 a + b = 7,a * b = 12。

数据范围

对于所有测试数据,满足:

1<=T<=501 <= T <= 50

2<=s<=10122 <= s <= 10^{12}

1<=p<=10121 <= p <= 10^{12}

提示:答案可能比较大,程序中建议使用 long long 保存。