1 条题解
-
0
自动搬运
来自洛谷,原作者为

fyfy
**搬运于
2025-08-24 21:56:36,当前版本为作者最后更新于2018-07-17 11:54:47,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这是今天的考试题,我来发一波~
看L和R的范围,显然不能一个一个加,这样会有很多重复情况,会超时,只要看该数有多少个后导0,就把L加上10的多少次方。
很容易可以想到价格后面尽可能多0,在此基础上需要尽量最后一个数字是5。 那么我们可以想到每次更新的时候尽量跳10^N。
用一重while循环,从L开始往R找,因为题目要输出最小的一个值,还有当ANS为1是,代码会跑的飞快,嘿嘿~
我的代码短,希望能通过审核~
#include <bits/stdc++.h> using namespace std; long long l,r,T; long long mn=999999999999,ans; int main() { freopen("price.in","r",stdin); freopen("price.out","w",stdout); cin>>T; while (T--) { scanf("%lld%lld",&l,&r); while (l<=r) { long long x=l,cnt=0; while (x%10==0) x/=10,++cnt; long long y=x,len=0,f=x%10; while (y) y/=10,++len; long long p=0; if (f==5) --p; p+=2*len; if (mn>p) mn=p,ans=l; l+=pow(10,cnt); } printf("%lld\n",ans); mn=999999999999; } return 0; }
- 1
信息
- ID
- 3066
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者