记录编号 |
160819 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HEOI 2015]定价 |
最终得分 |
100 |
用户昵称 |
stdafx.h |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.009 s |
提交时间 |
2015-04-29 16:12:34 |
内存使用 |
0.29 MiB |
显示代码纯文本
- #include <cstdio>
-
- using namespace std;
-
- void work();
- int cal(int);
- int POW(int);
- int BS(int);
-
- int main()
- {
- freopen("absurd.in","r",stdin);
- freopen("absurd.out","w",stdout);
- int t;
- scanf("%d",&t);
- for(int i=1;i<=t;i++)
- work();
- return 0;
- }
-
- void work()
- {
- int l,lbp,r,ans,temp,length=0,bns;
- scanf("%d%d",&l,&r);
- lbp=ans=l;
- temp=BS(l);
- while(l+temp<=r)
- {
- if(cal(ans)>cal(l+temp))
- ans=l+temp;
- l+=temp;
- temp=BS(l);
- }
- temp=ans;
- while(temp%10==0)
- {
- length++;
- temp/=10;
- }
- bns=((temp/10)*10+5)*POW(length);
- if(bns>=lbp&&bns<=r)
- ans=bns;
- printf("%d\n",ans);
- return;
- }
-
- int cal(int i)
- {
- int temp,ls=0;
- while(i%10==0)
- i/=10;
- temp=i;
- while(temp>0)
- {
- ls++;
- temp/=10;
- }
- if(i%10==5) return 2*ls-1;
- else return 2*ls;
- }
-
- int BS(int i)
- {
- int l=0;
- while(i%10==0)
- {
- l++;
- i/=10;
- }
- if(i%10<5) return (5-i%10)*POW(l);
- return (10-i%10)*POW(l);
- }
-
- int POW(int k)
- {
- int s=1;
- for(int i=1;i<=k;i++)
- s*=10;
- return s;
- }