top1编程
← 返回题目
题解

抽奖程序

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4330 抽奖程序(【入门】)

    解题思路

    商场的抽奖规则分两层:

    1. 第一层:号码在 1~10 之间(含 1 和 10)才能中奖,其余号码只能拿到优惠卷 coupon;
    2. 第二层:中奖号码里,1~5 号奖品是笔记本电脑 computer,6~10 号奖品是行李箱 luggage。

    所以要先判断"能不能中奖",再在能中奖的情况下判断"奖品是什么",这是典型的嵌套 if:外面一层 if 管有没有奖,里面一层 if 管是什么奖。

    拿样例来说,输入 80,80 不在 1~10 范围内,直接输出 coupon。

    边界情况:号码正好是 1 或 10 都算中奖;号码是 5 得电脑,号码是 6 得行李箱,分界线要判断准确。题目保证 n≥1,不用考虑 0 或负数;万一输入 0,程序也会走 else 输出 coupon,和"1~10 中奖、其余优惠卷"的规则一致。

    参考代码

    // 根据抽奖号码判断奖品:电脑、行李箱还是优惠卷
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        if (n >= 1 && n <= 10) {                  // 1~10号有奖品
            if (n <= 5) cout << "computer" << endl;   // 1~5号笔记本电脑
            else cout << "luggage" << endl;            // 6~10号行李箱
        } else {
            cout << "coupon" << endl;              // 其余号码得优惠卷
        }
        return 0;
    }
    

    复杂度分析

    无论抽奖号码是几,最多嵌套判断两次就能出结果,所以时间复杂度是 O(1)O(1)。只用一个整数变量,额外空间复杂度也是 O(1)O(1)。

    • 1