题目

思路:

按照我的思路这一题应该是这样子的

剔除+判断

剔除

因为后面的0要越多越好,所以我们判断0出现的情况,当2个数之间的差大与10时,证明2个之间会存在一个0,所以这一位我们可以把它去掉,相当于我们已经储存了一个0,当2个数之间差小于10我们就不能再删了,因为这时可能不存在0,如果其中有个数小于10的话,我们也停止,因为再删这个数就会消失(其实继续删也可以,只是不要对长的数字多删除....)

e.g

145 160

由于2个数之间差大于10

所以就会被我处理成14 16

那么我们所需要的数就在14~16之间,但很明显的,我们不能选14,因为140不满足条件,所以在剔除数时,我们要记录我们所剔除掉的数是不是为0,如果存在不是0的,那么我们后面就要对14++即15,我们所要找到值也就是在15~16之间即150

    while(m>=&&n-m>=)//1.剔除+判断
{
if(m%!=) x1=true;
m=m/;
n=n/;
len3++;
len4++;
}
if(x1==true)//对范围的影响
{
m+=;
}

接下来我们要做的就是进行特判处理

1.存在5的整10或整100数,我们可以通过计算很容易得出,这类数是长度最小的,所以我们放到第一个进行特判

我们记录输入2个数的长度,在这个长度的条件下去寻找,如果一个关于5的整10整100数成立,立刻输出(我就是这一步错了,导致只有50分,因为我在判断时,第一种情况就是50,结果我这么知道有50%的数据 都考到了这个点...)

    int ans=;
for(int i=;i<=len2;i++)//计算是否有5的整数混在其中
{
if(ans>=x&&ans<=y)
{
cout<<ans<<endl;
fin=;
break;
}
ans*=;
}

2.由于关于5的整的都被我们判断完了,那么我们现在就是处理x的长度不等于y的长度的情况,在这种情况下,我们就只需要找到最小整10或整100..的就可以啦

同样我们在处理时,也要考虑2位数或更多位数其除了首位数以外对数字的影响

    if(fin==&&len1!=len2)
{
while(x>)
{
if(x%!=&&x>) y2=true;
haha=x;
x=x/;
}
if(y2==true) haha+=;
for(int i=;i<len1;i++)
{
haha*=;
}
cout<<haha<<endl;
fin=;//对后面的判断有用
}

3.考虑长度相同的2个数,虽然这2个数已经被我剔除的差不够10了,但是其数字之间也是可以存在整10的,例如18 26..

而且期间也可能出现末尾是5的,那么这里我们就要纠结一下,到底是5优还是0优,0啦如上面的例子20 和25 一个的荒谬值为2,一个为3

所以最后一个特判也就如下,如果这2种情况都不存在,那就是最小的值

    else if(fin==&&len1==len2)
{
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
{
int d=m;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
}
#include<bits/stdc++.h>
using namespace std;
int T;
int x,y;
bool x1=false;
bool y2=false;
int len1,len2,fin;
int main()
{
//freopen("Price.in","r",stdin);
// freopen("Price.out","w",stdout);
cin>>T;
while(T--)
{
scanf("%d%d",&x,&y);
x1=false;y2=false;
fin=;
int star,len,len3,len4,m,n;
len1=;
len2=;
len3=;
len4=;
m=x;
n=y;
while(m>)
{
m=m/;
len1++;
}//计算长度
while(n>)
{
n=n/;
len2++;
}
m=x;
n=y;
while(m>=&&m>=&&n-m>=)//1.剔除+判断
{
if(m%!=) x1=true;
m=m/;
n=n/;
len3++;
len4++;
}
if(x1==true)//对范围的影响
{
m=m+;
}
len=min(len1,len2);
int ans=;
for(int i=;i<=len2;i++)//计算是否有5的整数混在其中
{
if(ans>=x&&ans<=y)
{
cout<<ans<<endl;
fin=;
break;
}
ans*=;
}
int haha=;
if(fin==&&len1!=len2)
{
while(x>)
{
if(x%!=&&x>) y2=true;
haha=x;
x=x/;
}
if(y2==true&&len1!=) haha+=;
for(int i=;i<len1;i++)
{
haha*=;
}
cout<<haha<<endl;
fin=;
}
else if(fin==&&len1==len2)
{
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
{
int d=m;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
}
}
}
return ;
}
/*
思路:
从最后一位开始比较
如果前面的不同且包含5
就选择5
否则就选择整10数
#include<bits/stdc++.h>
using namespace std;
int T;
int x,y;
bool x1=false;
bool y2=false;
int len1,len2,fin;
int main()
{
//freopen("Price.in","r",stdin);
// freopen("Price.out","w",stdout);
cin>>T;
while(T--)
{
scanf("%d%d",&x,&y);
x1=false;y2=false;
fin=;
int star,len,len3,len4,m,n;
len1=;
len2=;
len3=;
len4=;
m=x;
n=y;
while(m>)
{
m=m/;
len1++;
}//计算长度
while(n>)
{
n=n/;
len2++;
}
m=x;
n=y;
while(m>=&&n-m>=)//1.剔除+判断
{
if(m%!=) x1=true;
m=m/;
n=n/;
len3++;
len4++;
}
if(x1==true)//对范围的影响
{
m=m+;
}
len=min(len1,len2);
int ans=;
for(int i=;i<=len2;i++)//计算是否有5的整数混在其中
{
if(ans>=x&&ans<=y)
{
cout<<ans<<endl;
fin=;
break;
}
ans*=;
}
int haha=;
if(fin==&&len1!=len2)
{
while(x>)
{
if(x%!=&&x>) y2=true;
haha=x;
x=x/;
}
if(y2==true&&len1!=) haha+=;
for(int i=;i<len1;i++)
{
haha*=;
}
cout<<haha<<endl;
fin=;
}
else if(fin==&&len1==len2)
{
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
{
int d=m;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
}
}
}
return ;
}
/*
思路:
从最后一位开始比较
如果前面的不同且包含5
就选择5
否则就选择整10数...
*/

Price(洛谷P4109 [HEOI2015]定价)的更多相关文章

  1. 洛谷——P4109 [HEOI2015]定价

    P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...

  2. 洛谷 P4109 [HEOI2015]定价

    洛谷 这是今天的考试题,我来发一波- 看L和R的范围,显然不能一个一个加,这样会有很多重复情况,会超时,只要看该数有多少个后导0,就把L加上10的多少次方. 很容易可以想到价格后面尽可能多0, 在此基 ...

  3. 洛谷 P4112 [HEOI2015]最短不公共子串 解题报告

    P4112 [HEOI2015]最短不公共子串 题目描述 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的"子串"指的是它的连续的一段,例如bcd是 ...

  4. P4109 [HEOI2015]定价

    题目描述 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商 ...

  5. 洛谷P4107 [HEOI2015]兔子与樱花 [贪心,DFS]

    题目传送门 兔子与樱花 题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1 ...

  6. [洛谷P4111][HEOI2015]小Z的房间

    题目大意:有一个$n\times m$的房间,一些位置是房间,另一些位置是柱子,相邻两个房间之间有墙,问有多少种方案可以打通一些墙把所有房间连成一棵树,柱子不可以打通 题解:矩阵树定理,把房间当点,墙 ...

  7. Luogu P4109 [HEOI2015]定价 贪心

    思路:找规律?$or$贪心. 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数: 若可以构成$XX50...0$更优. 所以左端点增加的步长是增加的($i ...

  8. [洛谷P4107] HEOI2015 兔子与樱花

    问题描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...

  9. 【BZOJ4029】[HEOI2015]定价(贪心)

    [BZOJ4029][HEOI2015]定价(贪心) 题面 BZOJ 洛谷 题解 每次加上十进制下的\(lowbit\)就行了??? #include<iostream> #include ...

随机推荐

  1. app测试更多机型系统解决方法

    手头上测试机有限,不可能每个机型每个系统都 有一部手机,此时寻求一个什么都有的测试平台就显得尤为重要了. 作为小白的我刚刚使用了一波腾讯优测,简单粗暴有效给力,而且新注册认证用户还有60min免费使用 ...

  2. 微信小程序组件 自定义单选

    <view class='userperson'> <view class='f30 flexca'>请选择您的注册身份</view> <view class ...

  3. Js 中实现重定向的几种方式

    之所以要总结这个,是因为在项目中使用了 AJAX,当请求成功时需要重定向到另一个页面. 1 . <script type="text/javascript"> wind ...

  4. hive表信息查询:查看表结构、表操作等--转

    原文地址:http://www.aboutyun.com/forum.PHP?mod=viewthread&tid=8590&highlight=Hive 问题导读:1.如何查看hiv ...

  5. scrollTop()案例

    设置 <div> 元素中滚动条的垂直偏移: 定义和用法 scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置. scroll top offset 指的是滚动条相对于其顶部的偏 ...

  6. Connections between cities HDU - 2874(最短路树 lca )

    题意: 给出n个点m条边的图,c次询问 求询问中两个点间的最短距离. 解析: Floyd会T,所以用到了最短路树..具体思想为: 设k为u和v的最近公共祖先 d[i] 为祖结点到i的最短距离  则di ...

  7. 3.5 面向连接的运输:TCP

    3.5  面向连接的运输:TCP 3.5.1 TCP连接 TCP进行传输之间要进行三次握手建立连接,这个连接不是物理意义上的有一根电线连接,而是应用端两个应用,在逻辑上是已经建立连接了. TCP 不需 ...

  8. 【刷题】BZOJ 1951 [Sdoi2010]古代猪文

    Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...

  9. 口胡:[HNOI2011]数学作业

    题面 一开始看这题看了好久--觉得这题不可做. 结果是看错题了,我居然看着一段长长的C开头的单词,然后就觉得这是卡特兰数--不知道我在想些什么-- 观察到对于 i = 1~9 : f[i] = f[i ...

  10. python基础----迭代器、生成器、协程函数及应用(面向过程实例)

    一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...