#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
map <ll, ll> ma;
ll n, k;
ll f(ll x)// x是区间长度
{
if(ma[x]) return ma[x];
if(x <= k) return ma[x] = 1;
else return ma[x] = f(x / 2) + f(x - x / 2) + 1;
}
void work()
{
ma.clear();
cin >> n >> k;
cout << f(n) << endl;
}
int main()
{
int T;cin>>T;while(T--)
work();
return 0;
}
相关文章
- 03-14hdu-6983 线段树节点个数