链接: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;
}