top1编程
← 返回题目
题解

母亲节包礼物

1 条题解

  • 0
    @ 2026-8-4 10:20:43

    解题思路

    这道题有两个小问题,我们先想清楚每一步用哪种运算。

    问题一:s 厘米的丝带能包装几个大礼物盒?每个大礼物盒要 60 厘米。这其实是在问“s 里面包含多少个 60”,我们用整数除法: 大盒子个数 = s / 60 比如 s = 360,360 / 60 = 6,正好包 6 个。如果 s = 370,370 / 60 = 6,余下 10 厘米,也只能包 6 个,因为剩下的不够再包一个完整的大盒子了。整数除法会把余数直接丢掉,正好符合“包装整个大盒子”的要求。

    问题二:剩下的丝带够不够包 2 个小礼物盒?先用取余运算求出包完大盒子后剩下的丝带: 剩余丝带 = s % 60 包 2 个小盒子一共需要 2 × 25 = 50 厘米。所以只要判断: 剩余丝带 >= 50 就够,输出 1;否则不够,输出 0。

    注意两个容易错的地方:一是每个小盒子 25 厘米,2 个就是 50 厘米,别忘了乘以 2;二是比较的是“长度”,直接把剩余丝带和 50 比较就行,思路最简单,不容易绕晕。

    参考代码

    #include using namespace std;

    int main() { int s; // s 表示丝带总长度(厘米) cin >> s; // 读入丝带长度

    int big = s / 60;      // 整数除法:能包装的大礼物盒个数
    cout << big << endl;   // 先输出大礼物盒个数
    
    int rest = s % 60;     // 取余:包完大盒子后剩下的丝带长度
    if (rest >= 2 * 25) {  // 2 个小盒子需要 50 厘米,剩余够就输出 1
        cout << 1 << endl;
    } else {
        cout << 0 << endl; // 剩余不足 50 厘米,输出 0
    }
    return 0;
    

    }

    复杂度分析

    题目中 s 表示丝带总长度,最大为 1000。程序只做一次除法、一次取余和一次比较,运算次数固定,时间复杂度是 O(1)。只用了三个 int 变量存放长度和个数,空间复杂度也是 O(1)。

    • 1