贪心
数字去掉后面的0后肯定是越短越好,那么我们从l开始枚举,每次给最后一位非0的数+1,这样枚举长度肯定是越来越短的。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t,l,r;
inline int p(int x){
int num=1;
while (!(x%10)) num*=10,x/=10;
return num;
}
inline int calc(int x){
while (!(x%10)) x/=10;
int l=0,p=x%10;
while (x) x/=10,l++;
return (l<<1)-(p==5);
}
int main(){
scanf("%d",&t);
while (t--){
scanf("%d%d",&l,&r);
int ans,x=1e9;
for (int now;l<=r;l+=p(l))
if ((now=calc(l))<x)
x=now,ans=l;
printf("%d\n",ans);
}
return 0;
}