模拟即可(我好菜啊~只会模拟题)
/**************************************************************
Problem: 4029
User: syh0313
Language: C++
Result: Accepted
Time:36 ms
Memory:1292 kb
****************************************************************/
#include <iostream>
#include <cstdio>
#include <cstdlib>
using
namespace
std;
const
int
inf=1000000000;
int
T,mi,ans;
long
long
x,y,now,len,p[20];
bool
f;
int
main()
{
p[1]=1;
for
(
int
i=2;i<=10;i++) p[i]=p[i-1]*10;
scanf
(
"%d"
,&T);
while
(T--)
{
scanf
(
"%lld%lld"
,&x,&y); mi=inf; f=0;
if
(y==x) {
printf
(
"%lld\n"
,x);
continue
;}
for
(
long
long
pp=1;pp*5<=inf;pp*=10)
if
(x<=pp*5 && y>=pp*5) {
printf
(
"%lld\n"
,pp*5); f=1;
break
;}
if
(f)
continue
;
long
long
small=x,lll=0;
while
(small) {small/=10; lll++;}
for
(
long
long
pp=x/p[lll];pp<=y/p[lll];pp++)
if
(pp*p[lll]>=x && pp*p[lll]<=y)
{
int
ll=0;
long
long
kk=pp;
while
(kk%10==0) {kk/=10;}
bool
fff=0;
if
(kk%10==5) fff=1;
int
aa=0;
while
(kk) {kk/=10; aa++;}
if
(2*aa-fff<mi) {mi=2*aa-fff; ans=pp*p[lll];}
}
long
long
k=y-x; len=0;
while
(k) {len++; k/=10;}
for
(
long
long
i=x/p[len];i*p[len]<=y;i++)
if
(i*p[len]>=x)
{
bool
ff=0;
now=i*p[len];
while
(now%10==0) {now/=10;}
if
(now%10==5) ff=1;
int
ll=0;
while
(now) {ll++; now/=10;}
if
(2*ll-ff<mi) {mi=2*ll-ff; ans=i*p[len];}
}
printf
(
"%d\n"
,ans);
}
return
0;
}