solution.cpp 873 字节
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#include <iostream>
using namespace std;

int slove(int n)
{
    int m = 0;
    while (true)
    {
        // 体力大于600,还能进行下次循环
        if (n > 600)
        {
            n -= 600; //      跑1分钟消耗600体力
        }
        else
        {
            // 600/60 每秒钟消耗的体力
            // n / (600 / 60)  n体力能够跑的时间
            return m + n / (600 / 60);
        }

        n += 300;       //      休息1分钟提升300体力
        m = m + 2 * 60; //      一个循环2分钟
    }
}

// 递归算法
int slove_d(int n)
{
    //体力不大于600,结束递归
    if (n <= 600)
    {
        return n / (600 / 60);
    }

    // 每次循环2分钟, 消耗300体力
    return 60 * 2 + slove_d(n - 300);
}

int main()
{
    cout << slove(10000) << endl;
    cout << slove_d(10000) << endl;
    return 0;
}