张灯结彩
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

快过年了,领导让你设计一套方案,为城市中 t 条道路挂上灯笼。
每条道路上都停着一台大货车,车上有 n 个等待挂载的灯笼。
对于这条道路,每个长度为 k 的连续区间内的灯笼数量必须两两不同。
领导希望道路上的灯笼串越长越好,所以请你输出每条道路上的最长灯笼串的长度。

由于本题数据量较大,除了C语言选手,请优化你们的输入输出 。
这里给出几种 C++ 的优化方案。
1.关闭流同步,把 endl 替换为 '\n' 。
#include <iostream>
using namespace std;
int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    cout<<n<<'\n';
    return 0;
}
2.使用  \href{https://blog.csdn.net/m0_57362922/article/details/126577490}{快读模板}
3.使用头文件 cstdio ,然后用 scanf 和 printf 。

输入描述:

第一行有一个整数 t\ (\ 1 \leq t \leq {10}^6\ ) ,代表道路的数量。
随后 t 行,每行有两个整数 n\ (\ 1 \leq n \leq {10}^{18}\ ) 和 k\ (\ 1 \leq k \leq min(n,{10}^9)\ ) ,代表 候选灯笼的数量 和 全异区间的长度。

输出描述:

输出 t 行,每行一个整数,代表每条道路上的最长灯笼串的长度。
示例1

输入

复制
5
6 3
7 1
1919810 114514
2024 128
7355608 142857

输出

复制
3
7
1958
63
3835

说明

第一条道路的灯笼布置为 1\ 3\ 2 ,长度为 3 。
第二条道路的灯笼布置为 1\ 1\ 1\ 1\ 1\ 1\ 1 ,长度为 7 。