郑州轻工业大学oj题解(c语言) 题解:1067: 有问题的里程表 难题探索(一)
之前发过几道简单的水题,也就是非常简单的题目,感觉反响不错,挺多人都找来做了,也算为自己的刷题量额外增加了数量~
前几天有个同学特意问我,诶,师兄,你这有水题,有没有那种水题的相反啊,就是那种特别难的题,能不能把这些题也找出来啊?emmmm,当时我二话不说截了个图给他。。。image.png
难度都标在题目的后面了呀,显著星级越高的题目就一定更难啊~
那么,今天就找其中一道相对有意思的难题来作为今天文章的内容吧~。
1067: 有问题的里程表
- 题目形容
某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从3变到5,而跳过数字4,里程表所有位(个位、 十位、百位等)上的数字都是如此。例如,假如里程表显示339,汽车走过1公里之后,该里程表显示350。 - 输入
输入一个整数num,表示里程表显示的数值,1 < num < 1000,且肯定不含整数4。 - 输出
输出一个整数,为该汽车实际行驶的公里数。例如,假如该里程表显示55,则实际走过的公里 数是40。 - 参考代码:
#include<bits/stdc++.h>using namespace std; int main(){ int num,c=0; scanf("%d",&num); for(int i=1;i<=num;i++){ if(i%10!=4&&i/10%10!=4&&i/100%10!=4){ c++; } } printf("%d\n",c); return 0;}
- 代码解析:
- 在开始解析之前,说明一下,所谓的难题,绝不意味着一道题的代码量有多大,算法有多复杂,而是全靠对题目的了解而已。我们首先看题目,一个里程表,表上有三位数字,但任何一位都不能显示4,则说明,表上的数字会跳过4而直接显示下一位,故最后显示的公里数会比与其预期走过的要多出跳过的那些距离。
- 当然,题目这里要求我们算的是实际走过的路程,而非我们跳过的那些距离,所以在这里我们把总距离减去我们跳过的距离就能得出最终的答案~
- 在这里,我们就有了两个选择,一,是求出我们跳过了的里程数,也就是单一位含有4情况的里程,这里的单一位包括百十个,需要我们分别计算,最终用总里程减去跳过的里程就可。二,是求出我们实际走了的里程,这个也不难了解,只需没有任何一位有4,我们就把这位算作实际走过的里程就可,比第一种要省下一步。
- 这里,我们就以第二种为主进行分析。我们要求的是没有任何一位包括4的数,我们就把这个坏的里程输入循环来进行逐一判断排除。这里就要用到我们最初学过的知识,1004的数位分离,分别判断:个,十,百,各个位置都不=4的情况,我们把这些判断的例子用&&连在一起,只需三位数都不出现4,我们就把实际里程+1,循环计算完毕就可得出其实际走过的公里数。
大家有没有看完后豁然开朗,感觉实际也没这么难的感觉?所谓的难题,只需敢于去逐渐分析,找出题目数值之间的联络,想要完成也是非常简单的~
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 郑州轻工业大学oj题解(c语言) 题解:1067: 有问题的里程表 难题探索(一)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 郑州轻工业大学oj题解(c语言) 题解:1067: 有问题的里程表 难题探索(一)