题解:
题目难度:一星
考察点: 数论,贪心
易错点:
很多同学拿到这个题都有一种比较直观的想法,希望使用,维护两个值,一个是当前值
,一个是当前步数
,然后通过队列去维护所有的情况,当第一次值为
时,
所对应的值即为最小步数。但是这个题的空间是承受不下所有状态的,所以这种方法并不可取。
解法:贪心+数论
一种正确的贪心策略就是每次都走最大步数,也就是步,这样能够保证最快可以到达
,当最后走不了
步时,如果刚好到达,输出
,否则为
,因为在下一步总可以走
步
#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; }