记录
#include<bits/stdc++.h>
#define int long long
#define N 100010
using namespace std;
int t,l[N],r[N],ma[N],maxn[N],cnt=1,wsx=1;
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
struct node{
int val,id;
};
inline int structism(int x){
int ans=0,u=0;
while(x%10==0) x/=10;
if(x%10==5) u=1;
while(x){
x/=10;
ans++;
}
return ans*2-u;
}
inline node inquire(int x,int y){
int p=x/10000+1,q=y/10000+1;
if(p==q){
if(ma[p]>=x&&ma[p]<=y) return {ma[p],maxn[p]};
int sum=30,ans;
for(int i=x;i<=y;i++){
int jg=structism(i);
if(sum>jg){
sum=jg;
ans=i;
}
}
return {ans,sum};
}
node ans=inquire(x,r[p]);
for(int i=p+1;i<=q-1;i++){
if(ans.id>maxn[i]){
ans.id=maxn[i];
ans.val=ma[i];
}
}
node sum=inquire(l[q],y);
if(sum.id<ans.id) return sum;
return ans;
}
signed main(){
cin.tie()->sync_with_stdio(0);
cin>>t;
l[cnt]=1;
r[cnt]=9999;
ma[cnt]=5;
maxn[cnt]=1;
while(cnt<=N-8){
cnt++;
l[cnt]=10000*(cnt-1);
r[cnt]=l[cnt]+9999;
ma[cnt]=l[cnt];
maxn[cnt]=structism(l[cnt]);
}
while(t--){
int le=read(),ri=read();
node v=inquire(le,ri);
cout<<v.val<<endl;
}
return 0;
}