2021年蓝桥杯第十二届CC++大学B组真题及代码
目录
1A:空间(填空5分_单位转换)
2B:卡片(填空5分_模拟)
3C:直线(填空10分_数学+排序)
4D:货物摆放(填空10分_质因数)
5E:路径(填空15分_最短路)
6F:时间显示(编程题15分)
解析代码(模拟)
7G:砝码称重(编程题20分)
解析代码(01背包dp)
8H:杨辉三角形(编程题20分)
解析代码(找规律)
9I:双向排序(编程题25分)(待续)
10J:括号序列(编程题25分)(待续)
1A:空间(填空5分_单位转换)

答案:67108864
#include <iostream>
using namespace std;int main()
{// A题:256MB存多少个32位二进制整数(4bit)// 256MB = 256 * 1024 KB = 256 * 1024 * 1024 B = 256 * 1024 * 1024 * 8 bitcout << 256 * 1024 * 1024 * 8 / 32 << endl;cout << 256 * 1024 * 1024 / 4 << endl;return 0;
}
// 答案67108864
2B:卡片(填空5分_模拟)

答案:3181
#include <iostream>
#include <vector>
using namespace std;vector<int> arr(10, 2021);bool chick(int x)
{while (x){int tmp = x % 10;if (--arr[tmp] < 0)return false;x /= 10;}return true;
}int main()
{for (int i = 1; ; ++i){if (!chick(i)) // 如果拼不出来{cout << i - 1 << endl;return 0;}}return 0;
}
// 答案3181
3C:直线(填空10分_数学+排序)

答案:40257
// C:直线
// 大致思路:依次枚举各个点,每两个点生成对应的斜率和截距。最后看有多少个不同的组合,即有多少条不同的直线
// 注意事项:类型为double的两个数值a和b,即使数值相同,对应的double值也有可能不同,
// 故在cpp中比较两个double值应判断其abs之差是否在很小的一个范围之内,例如1e-8
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int N = 200000; // 直线的最大数
int n = 0;
struct Line
{double k;double b;// 结构体内嵌排序函数// 直接写比较函数是裸的len表示当前的值,如果len<a.len,那么就是从小到大排序。// 括号中的const表示参数a对象不会被修改,最后的const表明调用函数对象不会被修改// sort默认为从小到大排序,优先队列默认为从大到小。bool operator < (const Line& t) const //重载<操作符。可以对两个node使用<操作符进行比较{if (k != t.k) // k不同的话,k小的在前return k < t.k;return b < t.b; // k相同的话,b小的在前}
}l[N];int main()
{//枚举一下所有的点对for (int x1 = 0; x1 < 20; ++x1){for (int y1 = 0; y1 < 21; ++y1){for (int x2 = 0; x2 < 20; ++x2){for (int y2 = 0; y2 < 21; ++y2){if (x1 != x2)//避免斜率不存在的情况,总共20条竖线{double k = (double)(y2 - y1) / (x2 - x1);double b = y2 - k * x2;l[n++] = { k,b }; // 存数对}}}}}sort(l, l + n);int res = 1;for (int i = 1; i < n; ++i) // 找出截率和斜率不等的就是不同数{if (fabs(l[i].k - l[i - 1].k) > 1e-8 || fabs(l[i].b - l[i - 1].b) > 1e-8)++res;}cout << res + 20 << endl; // 加上不存在斜率的20条竖线return 0;
}
// 答案40257
4D:货物摆放(填空10分_质因数)

思路:先获得2021041820210418所有质因数(所以质因数也就一百多个),再通过质因数去组合从而获得所有的正约数,最后只需在所有的正约数找3个乘积为2021041820210418就行。
答案:2430
#include <iostream>
#include <vector>using namespace std;
#define int long long
#define endl '\n'
// n比较大,会爆因子signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n = 2021041820210418;vector<int> v;for (int i = 1; i * i <= n; i++) // 得到n的所有约数{if (n % i == 0){v.push_back(i);if (n / i != i)v.push_back(n / i);}}//cout << v.size() << endl;int res = 0;for (auto& a : v) //枚举一下a b c{for (auto& b : v){for (auto& c : v){if (a * b * c == n)++res;}}}cout << res << endl;return 0;
}
// 答案:2430
5E:路径(填空15分_最短路)

求最短路的问题,答案是1026837
6F:时间显示(编程题15分)


解析代码(模拟)
需要注意的是1秒等于1000毫秒,不需要输出毫秒,一开始先除等1000。
#include <iostream>
using namespace std;
#define endl '\n'signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);long long n;cin >> n;//1s=1000ms,先去除毫秒n /= 1000;// 每一天秒数24*60*60==86400s,取得到最后一天的秒数n %= (24 * 60 * 60);int h = n / 3600; // 小时n %= 3600; // 得到最后一天除了时以外的秒数int m = n / 60; //分钟int s = n % 60; //秒printf("%02d:%02d:%02d\n", h, m, s);return 0;
}
// 46800999
// 1618708103123
7G:砝码称重(编程题20分)


解析代码(01背包dp)
#include <bits/stdc++.h>
#include <iostream>using namespace std;
#define endl '\n'
#define int long long// -m<=j<=m
const int N = 110, M = 200010, OFFSET = M / 2;int n, sum; // n代表总选择数,sum代表所有砝码总重量
int w[N]; // 存重量的数组
bool dp[N][M];
// dp:状态表示f(i,j)-->集合:只从前i个物品中选,且总重量为j的所有方案的集合;属性:是否为true
// 状态计算:不选wi -> dp(i-1,j))、选+wi -> dp(i-1,j-wi)、选-wi ->dp(i-1,j+wi)
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1; i <= n; ++i){cin >> w[i];sum += w[i];}dp[0][OFFSET] = true; // j可能是负数,都要加一个偏移量(足够大的数)for (int i = 1; i <= n; ++i){for (int j = -sum; j <= sum; ++j) // -sum到sum +sum就从0开始,dp[0][0]初始化为true{dp[i][j + OFFSET] = dp[i - 1][j + OFFSET];if (j - w[i] >= -sum)dp[i][j + OFFSET] |= dp[i - 1][j - w[i] + OFFSET];if (j + w[i] <= sum)dp[i][j + OFFSET] |= dp[i - 1][j + w[i] + OFFSET];}}int res = 0;for (int j = 1; j <= sum; ++j){if (dp[n][j + OFFSET] == true)++res;}cout << res << endl;return 0;
}
/*
3
1 4 6
*/
8H:杨辉三角形(编程题20分)


解析代码(找规律)
#include <iostream>
#include <cstring>
#define endl '\n'
using namespace std;
const int mod = 1000000007;
const int M = 110;
int dp[M * 2][M][M];signed main()
{memset(dp, 0, sizeof dp); // 0 表示花 1 表示店dp[0][0][2] = 1;int n, m;cin >> n >> m;for (int i = 0; i <= n; ++i){for (int j = 0; j <= m; ++j){for (int k = 0; k <= 101; ++k){if (i == 0 && j == 0)continue;if (i > 0 && !(k & 1)) // 店dp[i][j][k] += dp[i - 1][j][k / 2];if (j > 0) // 花dp[i][j][k] += dp[i][j - 1][k + 1];dp[i][j][k] %= mod;}}}cout << dp[n][m - 1][1];
}
9I:双向排序(编程题25分)(待续)


10J:括号序列(编程题25分)(待续)

相关文章:
2021年蓝桥杯第十二届CC++大学B组真题及代码
目录 1A:空间(填空5分_单位转换) 2B:卡片(填空5分_模拟) 3C:直线(填空10分_数学排序) 4D:货物摆放(填空10分_质因数) 5E…...
秒杀业务优化之从分布式锁到基于消息队列的异步秒杀
一、业务场景介绍 优惠券、门票等限时抢购常常出现在各类应用中,这样的业务一般为了引流宣传而降低利润,所以一旦出现问题将造成较大损失,那么在业务中就要求我们对这类型商品严格限时、限量、每位用户限一次、准确无误的创建订单,…...
IntelliJ IDEA 将 Spring Boot 项目远程部署到服务器
使用 IntelliJ IDEA 将 Spring Boot 项目远程部署到服务器的详细步骤,涵盖多种常见方法: 方法一:通过 SSH Maven 插件直接部署 1. 服务器环境准备 确保服务器已安装: Java 运行环境(与项目 JDK 版本一致࿰…...
Qt 重入和线程安全
重入和线程安全 在整个文档中,"重入"和 "线程安全 "这两个术语被用来标记类和函数,以表明它们在多线程应用程序中的使用方式: 线程安全函数可以同时被多个线程调用,即使调用使用的是共享数据,因…...
23种设计模式中的策略模式
在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。 策略模式:Strategy。指的是,定义…...
纯vue手写流程组件
前言 网上有很多的vue的流程组件,但是本人不喜欢很多冗余的代码,喜欢动手敲代码;刚开始写的时候,确实没法下笔,最后一层一层剥离,总算实现了;大家可以参考我写的代码,可以拿过去定制…...
WPS宏开发手册——使用、工程、模块介绍
目录 系列文章前言1、开始1.1、宏编辑器使用步骤1.2、工程1.3、工程 系列文章 使用、工程、模块介绍 JSA语法 第三篇练习练习题,持续更新中… 前言 如果你是开发人员,那么wps宏开发对你来说手拿把切。反之还挺吃力,需要嘻嘻…...
面试中如何回答性能优化的问题
性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志(文中的应用指分布式服务下的单个节点)即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。 对应用进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。一个简单的应用…...
django入门教程之request和reponse【二】
接上节:入门【一】 再创建一个orders子应用,python manager.py startapp orders,orders目录中新建一个urls.py文件。结构如图: 通过上节课,我们知道在views.py文件中编写函数时,有一个默认入参request&…...
解决 IntelliJ IDEA 方法断点导致程序无法运行的问题
前言 在日常开发中,调试是程序员不可或缺的工具之一。IntelliJ IDEA 作为一款功能强大的集成开发环境(IDE),提供了丰富的调试功能,例如设置断点、单步执行、变量监视等。然而,有时候我们在调试过程中会遇到…...
RAG优化:python从零实现[吃一堑长一智]循环反馈Feedback
本文将介绍一种有反馈循环机制的RAG系统,让当AI学会"吃一堑长一智",给传统RAG装了个"后悔"系统,让AI能记住哪些回答被用户点赞/拍砖,从此告别金鱼记忆: 每次回答都像在玩roguelike:失败结局会强化下次冒险悄悄把优质问答变成新知识卡牌,实现"以…...
日常学习开发记录-select组件(2)
日常学习开发记录-select组件(2) 第二阶段:增强功能 给现有select组件新增功能 第二阶段:增强功能 键盘操作支持 支持键盘上下箭头选择选项支持回车键确认选择支持Esc键关闭下拉菜单 <template><div:class"[my-s…...
微服务 - 高级篇
微服务 - 高级篇 一、服务治理(一)服务注册与发现(二)负载均衡(三)服务熔断与降级 二、分布式事务(一)解决方案(二)最终一致性 三、性能优化(一&a…...
服务器入门笔记
服务器 采用linux操作系统 SN号 服务器的唯一标识 1U的服务器的高度——4.445cm 服务器上UID灯用于定位服务器 服务器是计算机的一种。在网络中为其他客户机提供计算或者应用服务。 服务器用来响应终端的服务请求,并进行处理 服务器的分类—— 按物理形态&#…...
【Linux】VMware17 安装 Ubuntu24.04 虚拟机
目录 安装教程 一、下载 Ubuntu 桌面版iso映像 二、安装 VMware 三、安装 Ubuntu 桌面版 VMware 创建虚拟机 挂载 Ubuntu ISO 安装 Ubuntu 系统 安装教程 一、下载 Ubuntu 桌面版iso映像 链接来自 清华大学开源软件镜像站 ISO文件地址:ubuntu-24.04.2-des…...
WPS宏开发手册——JSA语法
目录 系列文章2、JSA语法2.1、打印输出2.2、注释2.3、变量2.4、数据类型2.5、函数2.6、运算符2.7、比较2.8、if else条件语句2.9、for循环2.10、Math对象(数字常用方法)2.11、字符串常用方法2.12、数组常用方法 系列文章 使用、工程、模块介绍 JSA语…...
word中指定页面开始添加页码
第一步: 插入页码 第二步: 把光标放到指定起始页码处 第三步: 取消链接到前一节 此时关掉页脚先添加分节符 添加完分节符后恢复点击 第四步: 设置页码格式,从1开始 第五步: 删掉不要的页码,…...
详解“二分”系列算法
前言 1.学习建议 网上教二分系列算法的视频或者文章不在少数,每个人对于二分算法的理解都是不一样的,作者不建议小白刚学习二分系列算法就看很多不同的视频或者博客去学习,举个例子,有些教学提供的方法会把left赋值为-1…...
Python实现deepseek接口的调用
简介:DeepSeek 是一个强大的大语言模型,提供 API 接口供开发者调用。在 Python 中,可以使用 requests 或 httpx 库向 DeepSeek API 发送请求,实现文本生成、代码补全,知识问答等功能。本文将介绍如何在 Python 中调用 …...
文档处理控件Aspose.Words 教程:.NET版中增强的 AI 文档摘要功能
Aspose.Words是一个功能强大的 Word 文档处理库。它可以帮助开发人员自动编辑、转换和处理文档。 自 24.11 版以来,Aspose.Words for .NET 提供了 AI 驱动的文档摘要功能,使用户能够从冗长的文本中快速提取关键见解。在 25.2 版中,我们通过使…...
【Linux 维测专栏 5 -- linux pstore 使用介绍】
文章目录 Linux pstore 功能简介1. pstore 概述2. pstore 的核心功能3. pstore 的工作原理4. pstore 的使用示例5. pstore 的优势6. 典型应用场景配置示例1)DTS配置2)config配置运行测试及log问题小结Linux pstore 功能简介 1. pstore 概述 pstore(Persistent Storage)是…...
19,C++——11
目录 一、 C11简介 二、 新增的列表初始化 三、 新增的STL容器 四、 简化声明 1,auto 2,decltype 3,nullptr 五、右值引用 1,左值引用和右值引用 2,两种引用的比较 3,左值引用的使用场景 4&…...
风尚云网|前端|前后端分离架构深度剖析:技术革新还是过度设计?
前后端分离架构深度剖析:技术革新还是过度设计? 作者:风尚云网 在数字化转型浪潮中,前后端分离架构已成为现代Web开发的主流模式。但这项技术真的是银弹吗?本文将从工程实践角度,剖析其优势与潜在风险&am…...
ffmpeg介绍(一)——解封装
解封装 常用函数 1. avformat_open_input() 作用 打开媒体文件或网络资源:解析文件路径或 URL,识别媒体格式(如 MP4、AVI、RTSP 等)。初始化 AVFormatContext:分配并初始化 AVFormatContext 结构体,…...
版本控制GIT的使用
在 GitCode 上进行代码提交的步骤与在 GitHub 或其他 Git 托管平台上提交代码的步骤类似。以下是一个基本的流程: 1. 安装 Git 如果你还没有安装 Git,首先需要在你的计算机上安装 Git。你可以从 Git 官方网站 下载并安装适合你操作系统的版本。 2. 配…...
本周安全速报(2025.3.18~3.24)
合规速递 01 2025欧洲网络安全报告:DDoS攻击同比增长137%,企业应如何应对? 原文: https://hackread.com/european-cyber-report-2025-137-more-ddos-attacks/ 最新的Link11《欧洲网络安全报告》揭示了一个令人担忧的趋势:DDo…...
CMS网站模板设计与用户定制化实战评测
内容概要 在数字化转型背景下,CMS平台作为企业内容管理的核心载体,其模板架构的灵活性与用户定制能力直接影响运营效率。通过对WordPress、Baklib等主流系统的技术解构发现,模块化设计理念已成为行业基准——WordPress依托超过6万款主题库实…...
【后端开发面试题】每日 3 题(二十)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:https://blog.csdn.net/newin2020/category_12903849.html 📚专栏简介:在这个专栏中,我将会分享后端开发面试中常见的面试题给大家,每天的题目都是独…...
搭建个人博客教程(Hexo)
如何快速搭建一套本地的博客系统呢?这里有一套gitNode.jsHexo的部署方案来进行解决。 安装git Git 是一款免费开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年为 Linux 内核开发设计。它通过本地仓库和远程仓库实现代码管理,支持分支…...
Docker 可视化工具 Portainer
Docker 可视化工具 Portainer安装 官方安装地址:https://docs.portainer.io/start/install-ce/server/docker/wsl 一,首先,创建 Portainer Server 用来存储数据库的卷: docker volume create portainer_data二,然后…...
