第十六届蓝桥杯 省赛C/C++ 大学B组
编程题目现在在洛谷上都可以提交了。
未完待续,写不动了。
C++11 编译命令
g++ A.cpp -o A -Wall -lm -std=c++11
A. 移动距离
本题总分:5 分
问题描述
小明初始在二维平面的原点,他想前往坐标 ( 233 , 666 ) (233, 666) (233,666)。在移动过程中,他只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用:
- 水平向右移动,即沿着 x 轴正方向移动一定的距离。
- 沿着一个圆心在原点 ( 0 , 0 ) (0, 0) (0,0)、以他当前位置到原点的距离为半径的圆的圆周移动,移动方向不限(即顺时针或逆时针移动不限)。在这种条件下,他到达目的地最少移动多少单位距离?你只需要输出答案四舍五入到整数的结果。
思路
最短路径应该是往右走圆的半径长度 r = 23 3 2 + 66 6 2 r = \sqrt{233^2 + 666^2} r=2332+6662,然后再延着圆弧走到 ( 233 , 666 ) (233, 666) (233,666) 这个点。圆弧长度: l = α r = arctan 666 233 r l = \alpha r = \arctan{\frac{666}{233}}r l=αr=arctan233666r ( α \alpha α 是圆弧对应的圆心角,以弧度制表示)。答案是 1576 1576 1576。
代码
#include <bits/stdc++.h>
using namespace std;int main() {double r = sqrt(233 * 233 + 666 * 666);double ang = atan(1.0 * 666 / 233);cout << (int)round(ang * r + r) << endl;return 0;
}
B. 客流量上限
本题总分:5 分
问题描述
一家连锁旅馆在全国拥有 2025 2025 2025 个分店,分别编号为 1 1 1 至 2025 2025 2025。随着节日临近,总部决定为每家分店设定每日客流量的上限,分别记作 A 1 A_1 A1, A 2 A_2 A2, … \ldots …, A 2025 A_{2025} A2025。这些上限并非随意分配,而是需要满足以下约束条件:
- A 1 A_1 A1, A 2 A2 A2, … \ldots …, A 2025 A_{2025} A2025 必须是 1 1 1 至 2025 2025 2025 的一个排列,即每个 A i A_i Ai 均是 1 1 1 至 2025 2025 2025 之间的整数,且所有 A i A_i Ai 互不相同。
- 对于任意分店 i i i 和 j j j( 1 ≤ i , j ≤ 2025 1 ≤ i, j ≤ 2025 1≤i,j≤2025, i i i 可等于 j j j),它们的客流量上限 A i A_i Ai 和 A j A_j Aj 的乘积不得超过 i × j + 2025 i \times j + 2025 i×j+2025。这些约束旨在平衡各分店客流压力,确保服务质量和运营稳定性。现在,请你计算这样的分配方案究竟有多少种。由于答案可能很大,你只\需输出其对 1 0 9 + 7 10^9 + 7 109+7 取余后的结果即可。
思路
暂无
C. 可分解的正整数
时间限制: 1.0s
内存限制: 256.0MB
本题总分:10 分
问题描述
定义一种特殊的整数序列,这种序列由 连续递增的整数 组成,并满足以下条件:
- 序列长度至少为 3 3 3。
- 序列中的数字是连续递增的整数(即相邻元素之差为 1 1 1),可以包括正整数、负整数或 0 0 0。
例如, [ 1 , 2 , 3 ] [1, 2, 3] [1,2,3]、 [ 4 , 5 , 6 , 7 ] [4, 5, 6, 7] [4,5,6,7] 和 [ − 1 , 0 , 1 ] [−1, 0, 1] [−1,0,1] 是符合条件的序列,而 [ 1 , 2 ] [1, 2] [1,2](长度不足)和 [ 1 , 2 , 4 ] [1, 2, 4] [1,2,4](不连续)不符合要求。
现给定一组包含 N N N 个正整数的数据 A 1 A_1 A1, A 2 A_2 A2, … \ldots …, A N A_N AN。如果某个 A i A_i Ai 能够表示为符合上述条件的连续整数序列中所有元素的和,则称 A i A_i Ai 是可分解的。
请你统计这组数据中可分解的正整数的数量。
输入格式
输入的第一行包含一个正整数 N N N,表示数据的个数。
第二行包含 N N N 个正整数 A 1 A_1 A1, A 2 A_2 A2, … \ldots …, A N A_N AN,表示需要判断是否可分解的正整数序列。
输出格式
输出一个整数,表示给定数据中可分解的正整数的数量。
样例输入
3
3 6 15
样例输出
3
样例说明
A i = 3 A_i = 3 Ai=3 是可分解的,因为 [ 0 , 1 , 2 ] [0, 1, 2] [0,1,2] 的和为 0 + 1 + 2 = 3 0 + 1 + 2 = 3 0+1+2=3。
A i = 6 A_i = 6 Ai=6 是可分解的,因为 [ 1 , 2 , 3 ] [1, 2, 3] [1,2,3] 的和为 1 + 2 + 3 = 6 1 + 2 + 3 = 6 1+2+3=6。
A i = 15 A_i = 15 Ai=15 是可分解的,因为 [ 4 , 5 , 6 ] [4, 5, 6] [4,5,6] 的和为 4 + 5 + 6 = 15 4 + 5 + 6 = 15 4+5+6=15。
所以可分解的正整数的数量为 3 3 3。
评测用例规模与约定
对于 30 % 30\% 30% 的评测用例, 1 ≤ N ≤ 100 1 \le N \le 100 1≤N≤100, 1 ≤ A i ≤ 100 1 \le A_i \le 100 1≤Ai≤100。
对于 100 % 100\% 100% 的评测用例, 1 ≤ N ≤ 1 0 5 1 \le N \le 10^5 1≤N≤105, 1 ≤ A i ≤ 1 0 9 1 \le A_i \le 10^9 1≤Ai≤109。
思路
[ 1 , 1 0 9 ] [1, 10^9] [1,109] 的正整数里面, 1 1 1 无法被连续整数序列表示,剩余所有的数都可以被以 1 1 1 或 0 0 0 1 1 1 为中心的连续整数序列表示。例如,
- 2 2 2 可以被表示为 − 1 -1 −1, 0 0 0, 1 1 1, 2 2 2。
- 3 3 3 可以被表示为 0 0 0, 1 1 1, 2 2 2。
- 4 4 4 可以被表示为 − 3 -3 −3, − 2 -2 −2, − 1 -1 −1, 0 0 0, 1 1 1, 2 2 2, 3 3 3, 4 4 4。
代码
#include <bits/stdc++.h>
using namespace std;int n, a, ans = 0;int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);cin >> n;for (int i = 1; i <= n; i++)cin >> a, ans += (a > 1);cout << ans << endl;return 0;
}
D. 产值调整
时间限制: 1.0s
内存限制: 256.0MB
本题总分:10 分
问题描述
偏远的小镇上,三兄弟共同经营着一家小型矿业公司 “兄弟矿业”。公司旗下有三座矿山:金矿、银矿和铜矿,它们的初始产值分别用非负整数 A A A、 B B B 和 C C C 表示。这些矿山的产出是小镇经济的核心,支撑着三兄弟和许多矿工家庭的生计。
然而,各矿山的产值波动剧烈,有时金矿收益高而银矿、铜矿低迷,有时则相反。这种不稳定性让公司收入难以预测,也常引发兄弟间的争执。为了稳定经营,三兄弟设计了一个公平的产值调整策略,每年执行一次,每次调整时,将根据当前的产值 A A A、 B B B、 C C C,计算新产值:
- 金矿新产值 A A A′ = ⌊ B + C 2 ⌋ = \left \lfloor\frac{B + C}{2} \right\rfloor =⌊2B+C⌋;
- 银矿新产值 B B B′ = ⌊ A + C 2 ⌋ = \left \lfloor\frac{A + C}{2} \right\rfloor =⌊2A+C⌋;
- 铜矿新产值 C C C′ = ⌊ A + B 2 ⌋ = \left \lfloor\frac{A + B}{2} \right\rfloor =⌊2A+B⌋。
其中, ⌊ ⌋ \lfloor\rfloor ⌊⌋ 表示向下取整。例如, ⌊ 3.7 ⌋ = 3 \lfloor3.7\rfloor = 3 ⌊3.7⌋=3, ⌊ 5.2 ⌋ = 5 \lfloor5.2\rfloor = 5 ⌊5.2⌋=5。
计算出 A A A′、 B B B′、 C C C′ 后,同时更新: A A A 变为 A A A′, B B B 变为 B B B′, C C C 变为 C C C′,作
为下一年调整的基础。
三兄弟认为这个方法能平衡产值波动,于是计划连续执行 K K K 次调整。现在,请你帮他们计算,经过 K K K 次调整后,金矿、银矿和铜矿的产值分别是多少。
输入格式
输入的第一行包含一个整数 T T T ,表示测试用例的数量。
接下来的 T T T 行,每行包含四个整数 A A A, B B B, C C C, K K K,分别表示金矿、银矿和铜矿的初始产值,以及需要执行的调整次数。
输出格式
对于每个测试用例,输出一行,包含三个整数,表示经过 K K K 次调整后金矿、银矿和铜矿的产值,用空格分隔。
样例输入
2
10 20 30 1
5 5 5 3
样例输出
25 20 15
5 5 5
评测用例规模与约定
对于 30 % 30\% 30% 的评测用例, 1 ≤ T ≤ 100 1 \le T \le 100 1≤T≤100, 1 ≤ A , B , C , K ≤ 1 0 5 1 \le A, B,C, K \le 10^5 1≤A,B,C,K≤105。
对于 100 % 100\% 100% 的评测用例, 1 ≤ T ≤ 1 0 5 1 \le T \le 10^5 1≤T≤105, 1 ≤ A , B , C , K ≤ 1 0 9 1 \le A, B,C, K \le 10^9 1≤A,B,C,K≤109。
思路
三个数会迅速向某个数收敛,当三个数都一样时,无论进行多少次操作,结果都不会变了。在三个数都变成一样之前暴力求解。
代码
#include <bits/stdc++.h>
using namespace std;void solve() {int a, b, c, k;cin >> a >> b >> c >> k;while (k--) {int aa = (b + c) / 2, bb = (a + c) / 2, cc = (a + b) / 2;a = aa, b = bb, c = cc;if (a == b && b == c) break;}cout << a << " " << b << " " << c << "\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}
E. 画展布置
时间限制: 1.0s
内存限制: 256.0MB
本题总分:15 分
问题描述
画展策展人小蓝和助理小桥为即将举办的画展准备了 N N N 幅画作,其艺术价值分别为 A 1 A_1 A1, A 2 A_2 A2, … \ldots …, A N A_N AN。他们需要从这 N N N 幅画中挑选 M M M 幅,并按照一定顺序布置在展厅的 M M M 个位置上。如果随意挑选和排列,艺术价值的变化可能会过于突兀,导致观众的观展体验不够流畅。
为了优化布置,他们查阅了《画展布置指南》。指南指出,理想的画展应使观众在欣赏画作时,艺术价值的过渡尽量平缓。指南建议,选择并排列 M M M 幅画,应使艺术价值的变化程度通过一个数值 L L L 来衡量,且该值越小越好。数值 L L L 的定义为:
L = ∑ i = 1 M − 1 ∣ B i 2 − B i + 1 2 ∣ L = \sum_{i = 1}^{M - 1}|B_i^2 - B_{i + 1}^2| L=∑i=1M−1∣Bi2−Bi+12∣
其中 B i B_i Bi 表示展厅第 i i i 个位置上画作的艺术价值。
现在,他们希望通过精心挑选和排列这 M M M 幅画作,使 L L L 达到最小值,以提升画展的整体协调性。请你帮他们计算出这个最小值是多少。
输入格式
输入共两行。
第一行包含两个正整数 N N N 和 M M M,分别表示画作的总数和需要挑选的画作数量。
第二行包含 N N N 个正整数 A 1 A_1 A1, A 2 A_2 A2, … \ldots …, A N A_N AN,表示每幅画作的艺术价值。
输入样例
4 2
1 5 2 4
输出样例
3
样例用例规模与约定
对于 40 % 40\% 40% 的评测用例, 2 ≤ M ≤ N ≤ 1 0 3 2 \le M \le N \le 10^3 2≤M≤N≤103, 1 ≤ A i ≤ 1 0 3 1 \le A_i \le 10^3 1≤Ai≤103。
对于 100 % 100\% 100% 的评测用例, 2 ≤ M ≤ N ≤ 1 0 5 2 \le M \le N \le 10^5 2≤M≤N≤105, 1 ≤ A i ≤ 1 0 5 1 \le A_i \le 10^5 1≤Ai≤105。
输出格式
输出一个整数,表示 L L L 的最小值。
思路
- 对于选定的若干个数,一定按照大小排序一定最优。
- 对于 i < j i < j i<j,如果交换 B i B_i Bi 和 B j B_j Bj,即 B i ′ = B j B'_i = B_j Bi′=Bj, B j ′ = B i B'_j =B_i Bj′=Bi,一定会有 ∣ B i 2 − B i − 1 2 ∣ + ∣ B i 2 − B i + 1 2 ∣ + ∣ B j 2 − B j − 1 2 ∣ + ∣ B j 2 − B j + 1 2 ∣ < ∣ B i ′ 2 − B i − 1 ′ 2 ∣ + ∣ B i ′ 2 − B i + 1 ′ 2 ∣ + ∣ B j ′ 2 − B j − 1 ′ 2 ∣ + ∣ B j ′ 2 − B j + 1 ′ 2 ∣ |B_i^2 - B_{i - 1}^2| + |B_i^2 - B_{i + 1}^2| + |B_j^2 - B_{j - 1}^2| + |B_j^2 - B_{j + 1}^2| < |B'^2_i - B'^2_{i - 1}| + |B'^2_i - B'^2_{i + 1}| + |B'^2_j - B'^2_{j - 1}| + |B'^2_j - B'^2_{j + 1}| ∣Bi2−Bi−12∣+∣Bi2−Bi+12∣+∣Bj2−Bj−12∣+∣Bj2−Bj+12∣<∣Bi′2−Bi−1′2∣+∣Bi′2−Bi+1′2∣+∣Bj′2−Bj−1′2∣+∣Bj′2−Bj+1′2∣,即交换之后结果更劣。
- 不妨设选定数字从小到大排序,那么 L = ∑ i = 1 M − 1 ∣ B i 2 − B i + 1 2 ∣ = ∑ i = 1 M − 1 ( B i + 1 2 − B i 2 ) = B M 2 − B 1 2 L = \sum_{i = 1}^{M - 1}|B_i^2 - B_{i + 1}^2| = \sum_{i = 1}^{M - 1}(B_{i + 1}^2 - B_i^2) = B_M^2 - B_1^2 L=∑i=1M−1∣Bi2−Bi+12∣=∑i=1M−1(Bi+12−Bi2)=BM2−B12,所以我们要让所选的数最大值与最小值的差尽可能地小。
- 只需要先将 A A A 数组排序,然后依次选择连续的 M M M 个数,算出最小的 L L L 即可。
代码
#include <bits/stdc++.h>
using namespace std;#define int long longconst int N = 1e5 + 10;
int n, m, a[N], sum[N], ans = LLONG_MAX;signed main() {cin >> n >> m;for (int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + n + 1);for (int i = 2; i <= n; i++)sum[i] = sum[i - 1] + a[i] * a[i] - a[i - 1] * a[i - 1];for (int l = 1; l + m - 1 <= n; l++) {int r = l + m - 1;ans = min(ans, sum[r] - sum[l]);}cout << ans << endl;return 0;
}
F. 水质检测
时间限制: 1.0s
内存限制: 256.0MB
本题总分:15 分
问题描述
小明需要在一条 2 × n 2 \times n 2×n 的河床上铺设水质检测器。在他铺设之前,河床上已经存在一些检测器。如果两个检测器上下或者左右相邻,那么这两个检测器就是互相连通的。连通具有传递性,即如果 A A A 和 B B B 连通, B B B 和 C C C 连通,那么 A A A 和 C C C 也连通。现在他需要在河床上增加铺设一些检测器使得所有的检测器都互相连通。他想知道最少需要增加铺设多少个检测器?
输入格式
输入共两行,表示一个 2 × n 2 \times n 2×n 的河床。
每行一个长度为 n n n 的字符串,仅包含 # 和 .,其中 # 表示已经存在的检测器,. 表示空白。
输出格式
输出共 1 1 1 行,一个整数表示答案。
样例输入
.##.....#
.#.#.#...
样例输出
5
说明/提示
样例说明
其中一种方案:
.###....#
.#.######
增加了 5 个检测器。
评测用例规模与约定
对于 100 % 100\% 100% 的评测用例,保证 n ≤ 1000000 n \leq 1000000 n≤1000000。
H. 装修报价
题目描述
老王计划装修房子,于是联系了一家装修公司。该公司有一套自动报价系统,只需用户提供 N N N 项装修相关费用 A 1 , A 2 , … , A N A_1, A_2, \dots , A_N A1,A2,…,AN,系统便会根据这些费用生成最终的报价。
然而,当老王提交数据后,他发现这套系统的运作方式并不透明:系统只会给出一个最终报价,而不会公开任何运算过程或中间步骤。
公司对此解释称,这套系统会依据某种内部算法,在每对相邻数字之间插入 + + +(加法)、 − - −(减法)或 ⊕ \oplus ⊕(异或)运算符,并按照特定优先级规则计算结果:异或运算优先级最高,其次是加减。但由于保密性,具体的运算符组合以及中间过程都不会对外公开。
为了验证系统报价是否合理,老王决定模拟其运作方式,尝试每种可能的运算符组合,计算出所有可能出现的结果的总和。如果最终报价明显超出这个范围,他就有理由怀疑系统存在异常或误差。只是老王年事已高,手动计算颇为吃力,便向你求助。
现在,请你帮老王算出所有可能的结果的总和。由于该总和可能很大,你只需提供其对 1 0 9 + 7 10^9+7 109+7 取余后的结果即可。
输入格式
第一行输入一个整数 N N N,表示装修相关费用的项数。
第二行输入 N N N 个非负整数 A 1 , A 2 , … , A N A_1, A_2, \dots , A_N A1,A2,…,AN,表示各项费用。
输出格式
输出一个整数,表示所有可能的总和对 1 0 9 + 7 10^9 + 7 109+7 取余后的结果。
样例输入
3
0 2 5
样例输出
11
说明/提示
对于输入样例中的三个数 A = [ 0 , 2 , 5 ] A = [0, 2, 5] A=[0,2,5],所有可能的运算符组合共有 9 9 9 种。计算结果如下:
0 ⊕ 2 ⊕ 5 = 7 0 \oplus 2 \oplus 5 = 7 0⊕2⊕5=7
0 ⊕ 2 + 5 = 7 0 \oplus 2 + 5 = 7 0⊕2+5=7
0 ⊕ 2 − 5 = − 3 0 \oplus 2 - 5 = -3 0⊕2−5=−3
0 + 2 ⊕ 5 = 7 0 + 2 \oplus 5 = 7 0+2⊕5=7
0 + 2 + 5 = 7 0 + 2 + 5 = 7 0+2+5=7
0 + 2 − 5 = − 3 0 + 2 - 5 = -3 0+2−5=−3
0 − 2 ⊕ 5 = − 7 0 - 2 \oplus 5 = -7 0−2⊕5=−7
0 − 2 + 5 = 3 0 - 2 + 5 = 3 0−2+5=3
0 − 2 − 5 = − 7 0 - 2 - 5 = -7 0−2−5=−7
所有结果的总和为:
7 + 7 + ( − 3 ) + 7 + 7 + ( − 3 ) + ( − 7 ) + 3 + ( − 7 ) = 11 7 + 7 + (-3) + 7 + 7 + (-3) + (-7) + 3 + (-7) = 11 7+7+(−3)+7+7+(−3)+(−7)+3+(−7)=11
11 11 11 对 1 0 9 + 7 10^9 + 7 109+7 取余后的值依然为 11 11 11,因此,输出结果为 11 11 11。
评测用例规模与约定
- 对于 30 % 30\% 30% 的评测用例, 1 ≤ N ≤ 13 1 \leq N \leq 13 1≤N≤13, 0 ≤ A i ≤ 1 0 3 0 \leq A_i \leq 10^3 0≤Ai≤103。
- 对于 60 % 60\% 60% 的评测用例, 1 ≤ N ≤ 1 0 3 1 \leq N \leq 10^3 1≤N≤103, 0 ≤ A i ≤ 1 0 5 0 \leq A_i \leq 10^5 0≤Ai≤105。
- 对于 100 % 100\% 100% 的评测用例, 1 ≤ N ≤ 1 0 5 1 \leq N \leq 10^5 1≤N≤105, 0 ≤ A i ≤ 1 0 9 0 \leq A_i \leq 10^9 0≤Ai≤109。
思路
- 每一种组合真正对答案有贡献的是一段异或的前缀,如果涉及加减的运算会相互抵消,比如 0 ⊕ 2 − 3 0 \oplus 2 - 3 0⊕2−3,一定会存在一个 0 ⊕ 2 + 3 0 \oplus 2 + 3 0⊕2+3,后面的加 + 3 +3 +3 跟 − 3 -3 −3 就抵消掉了。
- 异或前缀 i i i 对答案贡献的数量是 2 × 3 n − i − 1 2 \times 3^{n - i - 1} 2×3n−i−1。
代码
#include <bits/stdc++.h>
using namespace std;#define int long longconst int N = 1e5 + 10, mod = 1e9 + 7;
int n, a[N], pre[N], pw3[N];signed main() {ios::sync_with_stdio(false); cin.tie(nullptr);cin >> n;pw3[0] = 1;for (int i = 1; i <= n; i++) {cin >> a[i];pw3[i] = pw3[i - 1] * 3 % mod;pre[i] = pre[i - 1] ^ a[i];}int ans = 0;for (int i = 1; i < n; i++) {ans = (ans + (pre[i] * 2 % mod) * pw3[n - i - 1] % mod) % mod;}ans = (ans + pre[n]) % mod;cout << ans << endl;return 0;
}
快读模板
inline int read() {int x = 0, f = 1; char c = getchar();while (c < '0' || c > '9') {if (c == '-') f = -1;c = getchar();}while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
}
如果题目中有的变量需要用 long long 的话,可以直接在宏里面把 int 扩展到 long long,这样比较方便(如下图)。
#include <bits/stdc++.h>
using namespace std;#define int long longinline int read() {int x = 0, f = 1; char c = getchar();while (c < '0' || c > '9') {if (c == '-') f = -1;c = getchar();}while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
}// 代码signed main() {// 代码return 0;
}
对拍代码
整个对拍需要以下文件。bf.cpp 文件里是暴力代码,std.cpp 文件里是用了算法的代码,data.cpp 用来生成输入样例,pai.cpp 用来比较 bfout.txt 和 stdout.txt 的结果是否相同。
注意:每次更改 bf.cpp,std.cpp 或 data.cpp 之后都需要重新编译之后再运行pai.cpp进行对拍。
接下来以输出 a + b 的程序来说明。

bf.cpp
#include <bits/stdc++.h>
using namespace std;int main() {int a, b, oup = 0;cin >> a >> b;for (int i = 1; i <= a; i++) oup++;for (int i = 1; i <= b; i++) oup++;cout << oup;return 0;
}
std.cpp
#include <bits/stdc++.h>
using namespace std;int main() {int a, b;cin >> a >> b;if (a > 0) cout << a << endl;cout << a + b << endl;return 0;
}
data.cpp
#include <bits/stdc++.h>
using namespace std;mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());int rand(int l, int r) {return uniform_int_distribution<int>(l, r)(rng);
}int main() {srand(time(0));int a = rand(1, 100000000), b = rand(1, 100000000); // 随机生成两个数字cout << a << ' ' << b << endl; // 按照格式输出return 0;
}
这个 data.cpp 如果直接用 rand() 函数随机性其实很差,所以要利用 mt19937
pai.cpp
可以不用自己创建txt文件,编译运行一次 pai.cpp 之后会自动生成相应 txt 文件。
#include <bits/stdc++.h>
using namespace std;int main() {int t = 1;while (1) {printf("test%d: ", t++);system("data.exe > in.txt"); // 用 data.exe 生成输入样例,并存入 in.txt 文件中system("std.exe < in.txt > stdout.txt");// 将 in.txt 文件中的输入样例用来测试 std.cpp 中的代码,并将结果输出到 stdout.txt 文件中system("bf.exe < in.txt > bfout.txt");// 将 in.txt 文件中的输入样例用来测试 bf.cpp 中的代码,并将结果输出到 bf.out 文件中// 比较 stdout.txt 和 bfout.txt 文件是否一样,一样返回 false,不一样返回 trueif (system("fc stdout.txt bfout.txt")) return 0;}
}
下图是 pai.cpp 运行后的输出结果,会显示输出不一样的地方。

如果输出样例一样的话,会一直显示找不到差异。

这个时候接着写下一道题就好了,让它在后台接着运行,有可能后面会出现不一样的地方。
相关文章:
第十六届蓝桥杯 省赛C/C++ 大学B组
编程题目现在在洛谷上都可以提交了。 未完待续,写不动了。 C11 编译命令 g A.cpp -o A -Wall -lm -stdc11A. 移动距离 本题总分:5 分 问题描述 小明初始在二维平面的原点,他想前往坐标 ( 233 , 666 ) (233, 666) (233,666)。在移动过程…...
从输入URL到页面渲染:浏览器请求的完整旅程解析
🌐 从输入URL到页面渲染:浏览器请求的完整旅程解析 #网络协议 #浏览器原理 #性能优化 #Web开发 一、概览:一次请求的9大关键阶段 1. 用户输入URL → 2. DNS解析 → 3. 建立TCP连接 → 4. 发送HTTP请求 5. 服务器处理 → 6. 接收响应 → 7…...
【计网】网络交换技术之分组交换(复习自用,重要1)
复习自用的,处理得比较草率,复习的同学或者想看基础的同学可以看看,大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记: 电路交换 报文交换 一、分组交换的定义 1.定义 分组交换&#x…...
6.2 GitHub API接口设计实战:突破限流+智能缓存实现10K+仓库同步
GitHub Sentinel 定期更新 API 接口设计 关键词:GitHub API 集成、异步爬虫开发、RESTful 接口设计、请求限流策略、数据增量更新 1. 接口架构设计原则 采用 分层隔离架构 实现数据采集与业务逻辑解耦: #mermaid-svg-WihvC78J0F5oGDbs {font-family:"trebuchet ms&quo…...
考研单词笔记 2025.04.13
alleviate v减轻,缓解 alleviation n减轻,缓解 blunt a钝的,不锋利的,坦率的,直截了当的v使减弱,使变钝 dampen v抑制,减弱,使潮湿 dim v减弱,淡化,变昏暗…...
解密CHASE-SQL和XiYan-SQL多智能体AI如何最终实现TEXT2SQL的突破
想象一个世界,无论技术背景如何,任何人都能轻松查询海量数据库、挖掘深层洞察。比如:“我想知道安徽地区最畅销电子产品的第三季度销售额?”——只需一句话。“去年营销支出与客户获取成本之间的相关性如何?”——像聊天一样输入问题。这就是Text-to-SQL的承诺:将人类语言…...
思考力提升的黄金标准:广度、深度与速度的深度剖析
文章目录 引言一、广度的拓展:构建多元知识网络1.1 定义与重要性1.2 IT技术实例与提升策略小结:构建多元知识网络,提升IT领域思考力广度 二、深度的挖掘:追求知识的精髓2.1 定义与重要性2.2 IT技术实例与提升策略小结:…...
web自动化:下拉选择框、弹出框、滚动条的操作
web自动化:下拉选择框、弹出框、滚动条的操作 一、下拉选择框 1、导包 from selenium.webdriver.support.select inport Select 2、实例化对象 Select(element) 3、常用方法 通过option索引来定位,从0开始:select_by_index(index)通过…...
数字人:打破次元壁,从娱乐舞台迈向教育新课堂(4/10)
摘要:数字人正从娱乐领域的璀璨明星跨界到教育领域的智慧导师,展现出无限潜力。从虚拟偶像、影视游戏到直播短视频,数字人在娱乐产业中大放异彩,创造巨大商业价值。在教育领域,数字人助力个性化学习、互动课堂和虚拟实…...
互联网三高-数据库高并发之分库分表ShardingJDBC
1 ShardingJDBC介绍 1.1 常见概念术语 ① 数据节点Node:数据分片的最小单元,由数据源名称和数据表组成 如:ds0.product_order_0 ② 真实表:再分片的数据库中真实存在的物理表 如:product_order_0 ③ 逻辑表:…...
【NLP】 18. Tokenlisation 分词 BPE, WordPiece, Unigram/SentencePiece
1. 翻译系统性能评价方法 在机器翻译系统性能评估中,通常既有人工评价也有自动评价方法: 1.1 人工评价 人工评价主要关注以下几点: 流利度(Fluency): 判断翻译结果是否符合目标语言的语法和习惯。充分性…...
Android游戏逆向工程全面指南
文章目录 第一部分:基础概念与环境搭建1.1 游戏逆向工程概述1.2 法律与道德考量1.3 开发环境准备基础工具集:环境配置示例: 第二部分:静态分析技术2.1 APK反编译与资源提取使用Apktool解包:关键文件分析: 2…...
ip route show 命令详解
《Linux 中 ip route show 输出结果解析及关键概念》 以下是对 ip route show 输出结果的详细解析,帮助你理解每条路由的含义及作用: 一、路由表整体结构 Linux 路由表中的每条条目包含 目标网络 / 主机、下一跳网关、出接口、路由协议、作用域、源地…...
antv x6使用(支持节点排序、新增节点、编辑节点、删除节点、选中节点)
项目需要实现如下效果流程图,功能包括节点排序、新增节点、编辑节点、删除节点、选中节点等 html部分如下: <template><div class"MindMapContent"><el-button size"small" click"addNode">新增节点&…...
DP主站如何华丽变身Modbus TCP网关!
DP主站如何华丽变身Modbus TCP网关! 在工业自动化领域,Profibus DP和Modbus TCP是两种常用的通信协议。Profibus DP通常应用于制造业自动化场景,而Modbus TCP则广泛使用于工业自动化和楼宇自动化等领域。为了实现这两种协议之间的互联互通&a…...
榕壹云在线商城系统:基于THinkPHP+ Mysql+UniApp全端适配、高效部署的电商解决方案
项目背景:解决多端电商开发的痛点 随着移动互联网的普及和用户购物习惯的碎片化,传统电商系统面临以下挑战: 1. 多平台适配成本高:需要同时开发App、小程序、H5等多端应用,重复开发导致资源浪费。 2. 技术依赖第三方…...
Pinia最基本用法
1. 定义 Store 首先,定义一个 Pinia Store,使用组合式 API 风格和 ref 来管理状态。 示例:stores/ids.js import { defineStore } from pinia; import { ref } from vue;export const useIdsStore defineStore(ids, () > {const ids …...
Android studio打包uniapp插件
一.参考资料与环境准备 原生工程配置需要使用到Android studio和HbuilderX 当前测试的as版本-20240301,下载地址:HbuilderX版本:4.36 二.插件创建流程 1.导入下载的UniPlugin-Hello-AS工程(下载地址见参考资料) 2.生成jks证书…...
App Cleaner Pro for Mac 中 Mac软件卸载工具
App Cleaner Pro for Mac 中 Mac软件卸载工具 一、介绍 App Cleaner & Uninstaller Pro Mac破解,是一款Mac软件卸载工具,残余垃圾清除工具!可以卸载应用程序或只删除不需要的服务文件,甚至可以删除以前删除的应用程序中的文…...
多线程与Tkinter界面交互
在现代图形用户界面(GUI)应用程序中,可能会遇到需要长时间运行的任务,例如网络请求、数据处理或文件读取等。如果这些任务直接在主线程中运行,会导致GUI界面“卡顿”或“不响应”。为了保持界面流畅和响应用户操作,我们可以通过使用多线程来将这些任务移到后台运行。然而…...
开发规范——Restful风格
目录 Restful Apifox 介绍 端口号8080怎么来的? 为什么要使用Apifox? Restful 如果请求方式是Post,那我就知道了要执行新增操作,要新增一个用户 如果请求方式是Put,那就代表我要修改用户 具体要对这些资源进行什么样的操…...
大模型——Llama Stack快速入门 部署构建AI大模型指南
Llama Stack快速入门 部署构建AI大模型指南 介绍 Llama Stack 是一组标准化和有主见的接口,用于如何构建规范的工具链组件(微调、合成数据生成)和代理应用程序。我们希望这些接口能够在整个生态系统中得到采用,这将有助于更轻松地实现互操作性。 Llama Stack 定义并标准化…...
符号右移“ >>= “ 与 无符号右移“ >>>= “ 的区别
符号右移" >> " 与 无符号右移" >>> " 的区别 一、符号右移" >> " 与 无符号右移" >>> " 的区别1. 符号右移(>>)与无符号右移(>>>)的区别…...
利用阿里云企业邮箱服务实现Python群发邮件
目录 一、阿里云企业邮箱群发邮件全流程实现 1. 准备工作与环境配置 2. 收件人列表管理 3. 邮件内容构建 4. 附件添加实现 5. 邮件发送核心逻辑 二、开发过程中遇到的问题与解决方案 1. 附件发送失败问题 2. 中文文件名乱码问题 3. 企业邮箱认证失败 三、完整工作流…...
探秘 Ruby 与 JavaScript:动态语言的多面风采
1 语法特性对比:简洁与灵活 1.1 Ruby 的语法优雅 Ruby 的语法设计旨在让代码读起来像自然语言一样流畅。它拥有简洁而富有表现力的语法结构,例如代码块、符号等。 以下是一个使用 Ruby 进行数组操作的简单示例: # 定义一个数组 numbers [1…...
08-JVM 面试题-mk
文章目录 1.JVM 的各部分组成2.运行时数据区2.1.什么是程序计数器?2.2.你能给我详细的介绍Java堆吗?2.3.能不能解释一下方法区?2.3.1常量池2.3.2.运行时常量池2.4.什么是虚拟机栈?2.4.1.垃圾回收是否涉及栈内存?2.4.2.栈内存分配越大越好吗?2.4.3.方法内的局部变量是否线…...
PostgreSQL技术大讲堂 - 第86讲:数据安全之--data_checksums天使与魔鬼
PostgreSQL技术大讲堂 - 第86讲,主题:数据安全之--data_checksums天使与魔鬼 1、data_checksums特性 2、避开DML规则,嫁接非法数据并合法化 3、避开约束规则,嫁接非法数据到表中 4、避开数据检查,读取坏块中的数据…...
DOM解析XML:Java程序员的“乐高积木式“数据搭建
各位代码建筑师们!今天我们要玩一个把XML变成内存乐高城堡的游戏——DOM解析!和SAX那种"边看监控边破案"的刺激不同,DOM就像把整个乐高说明书一次性倒进大脑,然后慢慢拼装(内存:你不要过来啊&…...
C++ 入门六:多态 —— 同一接口的多种实现之道
在面向对象编程中,多态是最具魅力的特性之一。它允许我们通过统一的接口处理不同类型的对象,实现 “一个接口,多种实现”。本章将从基础概念到实战案例,逐步解析多态的核心原理与应用场景,帮助新手掌握这一关键技术。 …...
关于获取文件大小的方法总结
编程开发中,获取文件大小是一项常见的需求,无论是进行文件管理、数据传输还是资源监控等操作,都可能需要知道文件的具体大小。下面将介绍几种常见的获取文件大小的方式,并进行对比分析。 几种可行的文件大小获取方式 1. 使用 fs…...
