#include 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; }