访友

访友

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;
}
全部评论

相关推荐

点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务