1 条题解

  • 0
    @ 2026-10-17 21:30:30

    题目描述

    有一棵竹笋,一开始高度是 0 厘米。它每天都会长高,但长得越来越慢:

    • 第 1 天:长 16 厘米

    • 第 2 天:长 8 厘米(16 ÷ 2)

    • 第 3 天:长 16/3 厘米

    • ……

    • 第 n 天:长 16 ÷ n 厘米

    解题思路

    第一步:用一个变量记录“当前高度”

    准备一个变量 height,一开始是 0。

    第二步:从第 1 天开始,一天一天地加

    用循环,让天数 day 从 1 到 365:

    height =  height + 16.0  / day
    

    注意:16 / day 可能是小数,所以 height 要用小数类型。

    第三步:每天加完后,检查高度够不够

    如果 height >= k:
        输出 day
        结束程序
    

    第四步:如果 365 天都过完了还没够

    循环结束后还没输出,就输出 -1。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int k;
        cin >> k;
    
        double height = 0;   // 当前高度,用小数
    
        for (int day = 1; day <= 365; day++) {
            height += 16.0 / day;   // 第 day 天长 16/day 厘米
    
            if (height >= k) {      // 够高了!
                cout << day << endl;
                return 0;           // 直接结束
            }
        }
    
        // 365 天都过完了还没够
        cout << -1 << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    108
    时间
    1000ms
    内存
    64MiB
    难度
    9
    标签
    递交数
    24
    已通过
    3
    上传者