访友

访友

http://www.nowcoder.com/questionTerminal/b8e21f5816874425836b7d32011f46b0

题解:

题目难度:一星

考察点: 数论,贪心

易错点:

很多同学拿到这个题都有一种比较直观的想法,希望使用,维护两个值,一个是当前值,一个是当前步数,然后通过队列去维护所有的情况,当第一次值为时,所对应的值即为最小步数。但是这个题的空间是承受不下所有状态的,所以这种方法并不可取。

解法:贪心+数论

一种正确的贪心策略就是每次都走最大步数,也就是步,这样能够保证最快可以到达,当最后走不了步时,如果刚好到达,输出,否则为,因为在下一步总可以走

#include "bits/stdc++.h"
using namespace std;
int main()
{
    int x;
    scanf("%d",&x);
    printf("%d\n",x/5+(x%5==0? 0:1));
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
05-07 19:10
已编辑
中国科学技术大学 C++
silly01:现在先去 momenta,8-9月去鹅找日常实习,八股文算法背好了你这随便进。不过建议补充一下后端知识,MySQL、Redis看下八股,再补个6824,加点go后台的技术栈,9月随便进大厂。CPP后端只能来WXG
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务