记录编号 160819 评测结果 AAAAAAAAAA
题目名称 [HEOI 2015]定价 最终得分 100
用户昵称 Gravatarstdafx.h 是否通过 通过
代码语言 C++ 运行时间 0.009 s
提交时间 2015-04-29 16:12:34 内存使用 0.29 MiB
显示代码纯文本
  1. #include <cstdio>
  2.  
  3. using namespace std;
  4.  
  5. void work();
  6. int cal(int);
  7. int POW(int);
  8. int BS(int);
  9.  
  10. int main()
  11. {
  12. freopen("absurd.in","r",stdin);
  13. freopen("absurd.out","w",stdout);
  14. int t;
  15. scanf("%d",&t);
  16. for(int i=1;i<=t;i++)
  17. work();
  18. return 0;
  19. }
  20.  
  21. void work()
  22. {
  23. int l,lbp,r,ans,temp,length=0,bns;
  24. scanf("%d%d",&l,&r);
  25. lbp=ans=l;
  26. temp=BS(l);
  27. while(l+temp<=r)
  28. {
  29. if(cal(ans)>cal(l+temp))
  30. ans=l+temp;
  31. l+=temp;
  32. temp=BS(l);
  33. }
  34. temp=ans;
  35. while(temp%10==0)
  36. {
  37. length++;
  38. temp/=10;
  39. }
  40. bns=((temp/10)*10+5)*POW(length);
  41. if(bns>=lbp&&bns<=r)
  42. ans=bns;
  43. printf("%d\n",ans);
  44. return;
  45. }
  46.  
  47. int cal(int i)
  48. {
  49. int temp,ls=0;
  50. while(i%10==0)
  51. i/=10;
  52. temp=i;
  53. while(temp>0)
  54. {
  55. ls++;
  56. temp/=10;
  57. }
  58. if(i%10==5) return 2*ls-1;
  59. else return 2*ls;
  60. }
  61.  
  62. int BS(int i)
  63. {
  64. int l=0;
  65. while(i%10==0)
  66. {
  67. l++;
  68. i/=10;
  69. }
  70. if(i%10<5) return (5-i%10)*POW(l);
  71. return (10-i%10)*POW(l);
  72. }
  73.  
  74. int POW(int k)
  75. {
  76. int s=1;
  77. for(int i=1;i<=k;i++)
  78. s*=10;
  79. return s;
  80. }