1 条题解

  • 0
    @ 2025-9-15 23:04:52

    C

    说明

    本题要求计算两个兴趣小组都没有参加的人数,核心逻辑基于集合的容斥原理

    1. 参加至少一个兴趣小组的人数 = 参加语文小组的人数 + 参加数学小组的人数 - 两个小组都参加的人数(减去重复计算的部分)。
    2. 两个小组都没有参加的人数 = 总人数 - 参加至少一个兴趣小组的人数。

    公式可简化为:结果 = n - (a + b - c)
    整个过程仅涉及基础算术运算,时间复杂度为O(1)(常数级),需注意a + b - c可能为0(当无人参加任何小组时),但不影响计算逻辑。

    代码

    #include <stdio.h>
    
    int main() {
        int n, a, b, c;
        // 读取总人数n,语文小组a人,数学小组b人,都参加的c人
        scanf("%d %d %d %d", &n, &a, &b, &c);
        
        // 计算两个小组都没参加的人数:总人数 - 参加至少一个小组的人数
        int result = n - (a + b - c);
        
        printf("%d\n", result);
        return 0;
    }
    

    C语言拓展知识

    推荐搜索:集合的容斥原理(两集合交集的计算方法)、C语言中算术表达式的求值顺序(减法与括号的优先级)、多变量输入时scanf格式字符串的空格作用。

    C++

    说明

    本题逻辑与C语言完全一致(基于容斥原理计算),C++通过输入输出流和表达式直接计算,代码更简洁:无需定义中间变量存储结果,可直接在输出语句中计算n - (a + b - c),同时cin的链式输入避免了格式控制符的使用。

    新知识

    1. 复杂表达式的直接输出:

      • 术语:cout << n - (a + b - c)
      • 解释:C++支持在输出语句中直接计算包含括号的复杂表达式,自动遵循“先算括号内,再算括号外”的优先级规则,无需像C语言那样先定义变量存储中间结果,代码更紧凑。
      • 对比:C语言需先计算a + b - c,再用n减去该值并存储;C++可一步完成计算与输出。
    2. 多变量链式输入:

      • 术语:cin >> n >> a >> b >> c
      • 解释:cin通过>>运算符可连续读取多个变量,自动忽略输入中的空格或回车,无需像C语言scanf那样显式编写格式控制符(如%d),减少输入格式错误。

    AC

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n, a, b, c;
        // 链式读取四个整数,自动处理分隔符
        cin >> n >> a >> b >> c;
        
        // 直接计算并输出结果,表达式包含括号确保优先级
        cout << n - (a + b - c) << endl;
        return 0;
    }
    

    C++拓展知识

    推荐搜索:C++运算符优先级(括号与加减运算的顺序)、cin读取多个整数时的缓冲区处理、容斥原理在编程中的其他应用(如统计多个集合的并集大小)。

    • 1

    信息

    ID
    169
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    74
    已通过
    34
    上传者