链接:https://ac.nowcoder.com/acm/contest/9667/C
来源:牛客网
来源:牛客网
题目描述
牛牛喜欢玩滑板, 其中最喜欢的一项就是用滑板跳上楼梯。
现在有一个 n 阶楼梯, 牛牛想每次跳上去一阶或者三阶,由于跳三阶特别累,所以他不能连续跳三阶,牛牛想知道他最少多少次能恰好跳到第 n 阶。
输入描述:
一个数字 n ( 0 ≤ n ≤ 1e12 )
输出描述:
输出一个整数,代表最少多少次能恰好跳到第 n 阶。
示例1
输入
5
输出
3
思路:
最开始可以选择跳3步或跳1步,能跳三步明显更优,由于不能连续跳三阶,所以间断跳三阶明显更优,所以以四个阶梯为一个周期,到最后不足三阶时,只能一步一步跳。
所以ans=1+(n-3)/4*2+(n-3)%4;
AC代码
#include<bits/stdc++.h> using namespace std; #define ll long long int main() { ll n; scanf("%lld",&n); if(n<=2) printf("%lld\n",n); else printf("%lld\n",2*((n-3)/4)+1+(n-3)%4); return 0; }