1 条题解
-
0
C
说明
本题要求计算两个兴趣小组都没有参加的人数,核心逻辑基于集合的容斥原理:
- 参加至少一个兴趣小组的人数 = 参加语文小组的人数 + 参加数学小组的人数 - 两个小组都参加的人数(减去重复计算的部分)。
- 两个小组都没有参加的人数 = 总人数 - 参加至少一个兴趣小组的人数。
公式可简化为:
结果 = 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的链式输入避免了格式控制符的使用。新知识
-
复杂表达式的直接输出:
- 术语:
cout << n - (a + b - c) - 解释:C++支持在输出语句中直接计算包含括号的复杂表达式,自动遵循“先算括号内,再算括号外”的优先级规则,无需像C语言那样先定义变量存储中间结果,代码更紧凑。
- 对比:C语言需先计算
a + b - c,再用n减去该值并存储;C++可一步完成计算与输出。
- 术语:
-
多变量链式输入:
- 术语:
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
- 上传者