版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugarbliss/article/details/82531165
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> vec;
void dfs(ll cur, int cnt, int len)
{
vec.push_back(cur);
if(len == 18) return;
dfs(cur*10, cnt, len+1);
if(cnt < 3)
{
for(int i = 1; i <= 9; i++)
dfs(cur*10+i, cnt+1, len+1);
}
}
int main()
{
for(int i = 1; i <= 9; i++)
dfs(i, 1, 1);
vec.push_back(1e18);
sort(vec.begin(), vec.end());
int T;
scanf("%d", &T);
while(T--)
{
ll L, R;
scanf("%lld%lld", &L, &R);
int l = lower_bound(vec.begin(), vec.end(), L) - vec.begin();
int r = upper_bound(vec.begin(), vec.end(), R) - vec.begin();
cout << r - l << endl;
}
return 0;
}