1 条题解

  • 0
    @ 2026-1-29 22:54:52
    #include<bits/stdc++.h>
    using namespace std;
    
    int main() {
        // [1] 读取输入的总钱数N(元),转换为角以便计算(1元=10角)
        int N;
        cin >> N;
        int total = N * 10; // 总金额(角)
        
        // [2] sum-累加统计符合条件的购买方案数,初始化为0
        int sum = 0;
        
        // [3] 枚举圆珠笔的数量x(x≥1,且8x < total-2-1,剩余钱够买至少1支铅笔和1支铅笔芯)
        for (int x = 1; 8 * x < total - 3; x++) {
            // [4] 枚举铅笔的数量y(y≥1,且2y < total-8x-1,剩余钱够买至少1支铅笔芯)
            for (int y = 1; 2 * y < total - 8 * x - 1; y++) {
                // 计算铅笔芯的数量z
                int z = total - 8 * x - 2 * y;
                // [5] 验证条件:铅笔芯数量≥1,且总数量>30
                if (z >= 1 && x + y + z > 30) {
                    sum++; // 符合条件,方案数累加1
                }
            }
        }
        
        // [6] 输出符合条件的方案总数
        cout << sum << endl;
        
        return 0;
    }
    
    • 1

    信息

    ID
    1055
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者