P8741 [蓝桥杯 2021 省 B] 填空问题 题解
P8741 [蓝桥杯 2021 省 B] 填空问题 题解
题目传送门
欢迎大家指出错误并联系这个蒟蒻
更新日志
- 2023-05-09 23:19 文章完成
- 2023-05-09 23:20 通过审核
- 2023-06-20 21:03 优化了文章代码格式
试题 A :空间
【解析】
本题考察计算机存储的基础知识,只要掌握空间存储的换算方法,就能够算出答案。
【程序】
#include <bits/stdc++.h>
using namespace std;
int main() {
printf("%d\n", 256 * 8 / 32 * 1024 * 1024);
return 0;
}
【答案】
67108864
试题 B :卡片
【解析】
这道题应该先定义一个长度为 \(10\) 的数组,用来存放数字 \(0 \sim 9\) 的卡片数,下标则代表数字,元素代表卡片已经使用的张数,初始值为 \(0\) ,每种卡片如果使用超过 \(2021\) 张,则输出结果。
程序从 \(1\) 开始递增遍历,当遍历到某个数时,将拼成该数所需的所有卡片类型数增加,随后判断数组中每种卡片是否被用完,如果用完则退出循环。
【程序】
#include <bits/stdc++.h>
using namespace std;
int a[10];
int main() {
for (int s = 1;; s++) {
int temp = s;
while (temp) {
a[temp % 10]++;
temp /= 10;
}
for (int i = 1; i < 10; i++) {
if (a[i] > 2021) {
printf("%d\n", s - 1);
// 减1是因为这一张无法凑出
return 0;
}
}
}
return 0;
}
【答案】
3181
试题 C :直线
【解析】
本题很容易让人想到枚举和去重,本人代码就是用枚举和去重来实现的。
为了储存 \(3\) 个数,本人采取了 \(\operatorname{STL}\) 中 \(\operatorname{pair}\) 类来表示,为了去重,本人采取了 \(\operatorname{STL}\) 中的 \(\operatorname{set}\) 集合 (如果没学过,请自行查阅资料)。
【程序】
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
typedef pair<PII, int> PIII;
set<PIII> s;
vector<PII> vec;
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 21; j++) {
vec.push_back({ i, j });
}
}
for (int i = 0; i < vec.size(); i++) {
for (int j = i + 1; j < vec.size(); j++) {
int x1 = vec[i].first, y1 = vec[i].second;
int x2 = vec[j].first, y2 = vec[j].second;
int A = x2 - x1, B = y1 - y2, C = x1 * y2 - x2 * y1;
int gcdd = gcd(gcd(A, B), C);
s.insert({ { B / gcdd, A / gcdd }, C / gcdd });
}
}
cout << s.size() << endl;
return 0;
}
【答案】
40257
试题 D :货物摆放
【解析】
本题根据题意,要满足 \(\operatorname{n}=\operatorname{x}\times \operatorname{y}\times \operatorname{z}\) 的所有情况,首先想到枚举法,分为两步:
1、找出 \(n\) 的所有因子。
2、对所有因子进行暴力枚举。
【程序】
#include <bits/stdc++.h>
using namespace std;
long long a[100];
long long n = 2021041820210418;
int len;
int main() {
for (long long i = 1; i * i <= n; i++) {
if (n % i == 0)
// i是约数
{
a[len++] = i;
// 将约数放入数组
if (n / i != i)
// n/i也是约数
{
a[len++] = n / i;
}
}
}
int ans = 0;
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
for (int k = 0; k < len; k++) {
if (a[i] * a[j] * a[k] == n) {
ans++;
}
}
}
}
printf("%d\n", ans);
return 0;
}
【答案】
2430
试题 E :路径
【解析】
本题题意比较直接,通过题意就可以知道题目考查图的最短路径算法,本人则使用了 \(\operatorname{Dijkstra}\) 算法直接计算 (如果没学过,请自行查阅资料并学习)。
【程序】
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2022;
int edges[MAXN][MAXN];
int d[MAXN];
bool visited[MAXN];
int gcd(int u, int v) {
int temp = u % v;
while (temp > 0) {
u = v;
v = temp;
temp = u % v;
}
return v;
}
int lcm(int u, int v) {
return (u * v / gcd(u, v));
}
int main() {
memset(edges, 0x3f3f3f, sizeof(edges));
for (int i = 1; i <= 2021; i++) {
edges[i][i] = 0;
for (int j = i + 1; j <= 2021; j++) {
if (j - i <= 21) {
edges[i][j] = edges[j][i] = lcm(j, i);
} else {
break;
}
}
}
memset(d, 0x3f3f3f, sizeof(d));
memset(visited, false, sizeof(visited));
d[1] = 0;
for (int i = 1; i < 2021; i++) {
int x = 0;
for (int j = 1; j < 2021; j++) {
if (!visited[j] && d[j] < d[x]) {
x = j;
}
}
visited[x] = 1;
for (int j = max(1, x - 21); j <= min(2021, x + 21); j++) {
d[j] = min(d[j], d[x] + edges[x][j]);
}
}
printf("%d\n", d[2021]);
return 0;
}
【答案】
10266837
P8741 [蓝桥杯 2021 省 B] 填空问题 题解的更多相关文章
- 2018年蓝桥杯A组C/C++决赛题解
2018年第九届蓝桥杯A组C/C++决赛题解 点击查看视频题解 点击查看2018年蓝桥杯A组C/C++决赛题目(不含答案) 1:三角形面积 画个图,求三角形面积,可以用外接长方形 - 其他多余区域面积 ...
- 2016年蓝桥杯B组C/C++决赛题解
2016年第七届蓝桥杯B组C/C++决赛题解 2016年蓝桥杯B组C/C++决赛题目(不含答案) 1.一步之遥 枚举解方程,或者套模板解线性方程 #include<bits/stdc++.h&g ...
- 2015年蓝桥杯B组C/C++决赛题解
2015年第六届蓝桥杯B组C/C++决赛题解 点击查看2015年第六届蓝桥杯B组C/C++国赛题目(不含答案) 1.积分之迷 三重循环 枚举A,B,C的值,如果满足两个条件:3个A + 7个B ...
- 2018年蓝桥杯B组C/C++决赛题解
2018年第九届蓝桥杯B组C/C++决赛题解 点击查看2018年蓝桥杯B组C/C++决赛题目(不含答案) 1.换零钞 ok 枚举 设x表示1元钱的个数,y表示2元钱的个数,z表示5元钱的个数 x+21 ...
- 第十届蓝桥杯省赛JavaB组个人题解
前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...
- 2017年蓝桥杯B组C/C++决赛题解
2017年蓝桥杯B组C/C++决赛题目(不含答案) 1.36进制 ok 求36进制,类比二进制转10进制,36^3 + 36^2 + 36^1 + 36^0 2.磁砖样式 ok dfs搜索 我自己写的 ...
- 第九届蓝桥杯(A组填空题)
1.标题:分数 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + …. 每项是前一项的一半,如果一共有20项, 求这个和是多少,结果用分数表示出来. 类似: 3/2 当然,这只是加了前2项 ...
- 2015年蓝桥杯C/C++ B组题目题解
1. 输入一个字符串,求它包含多少个单词.单词间以一个或者多个空格分开. 第一个单词前,最后一个单词后也可能有0到多个空格.比如:" abc xyz" 包含两个单词,"a ...
- 【蓝桥杯】第十二届蓝桥杯砝码称重(Python题解)
@ 目录 题目 [80分] 思路 知识点 代码 题目 [80分] 你有一架天平和N个砝码,这N个砝码重量依次是W1,W2,--,WN请你计算一共可以称出多少种不同的重量? 注意砝码可以放在天平两边. ...
- 2018年蓝桥杯A组C/C++决赛题目
2018年蓝桥杯A组C/C++决赛题目 2018年蓝桥杯A组C/C++决赛题解 1:三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3, 2.5) (6.4, 3.1) (5 ...
随机推荐
- Jmeter压测实战:Jmeter二次开发之自定义函数
1 前言 Jmeter是Apache基金会下的一款应用场景非常广的压力测试工具,具备轻量.高扩展性.分布式等特性.Jmeter已支持实现随机数.计数器.时间戳.大小写转换.属性校验等多种函数,方便使用 ...
- 【C#/.NET】RESTful风格的Post请求与CreateAtAction
目录 引言 实现步骤 概念介绍 创建控制器 总结 引言 在构建Web应用程序时,遵循RESTful风格的API设计原则能够使我们的系统更加灵活.可扩展和易于维护.其中,Post请求在创建资源时起 ...
- 在Linux环境下通过命令行执行JMeter脚本后查看响应结果的配置
在Linux环境中进行性能测试时,我们可能会遇到一定程度的报错.如果无法打开JMeter的GUI界面,但又需要查看响应结果,可以按照以下步骤进行配置: 1. 打开JMeter的安装目录,在`bin/` ...
- CPU摸鱼被抓,上了一个新技术!
我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴. 我们CPU的任务就是执行程序员编写的程序,只不过程序员编写的是高级语言代码,而我们执行的是这些代码被 ...
- (转)IBM Appscan9.0.3安全扫描简单安装、使用以及高危漏洞修复
最近手上负责一个的项目要进行等保评测.请的第三方公司采用IBM Security AppScan Standard对项目进行安全测试.测试报告高危漏洞主要包含sql注入.sql盲注.跨站点脚本编制如下 ...
- 犯得一些zz错误
本文用于警戒自己,不要再犯以前的傻逼错误 noip没建子文件夹导致爆零 知道关同步流之后还用endl,导致超时 使用'\n'代替endl 3.多组测试数据使用for循环占用了 i 变量名,后面在for ...
- [mysql]定制封装MySQL的docker镜像
前言 基于MySQL的原版镜像做一些个性化配置修改,封装/etc/my.cnf文件到镜像中,并且支持通过环境变量修改innodb_buffer_pool_size.server_id以及自动配置inn ...
- 清理MySQL的binlog日志
前言 MySQL的binlog是以二进制形式打印的日志,没设置自动删除的话,时间长了就会占用大量存储空间.删除MySQL的binlog日志有两种方法:自动删除和手动删除. 自动删除 永久生效:修改My ...
- vue3探索——组件通信之事件总线
Vue2.x使用EventBus进行组件通信,而Vue3.x推荐使用mitt.js. 比起Vue实例上的EventBus,mitt.js好在哪里呢?首先它足够小,仅有200bytes,其次支持全部事件 ...
- 日志开源组件(六)Adaptive Sampling 自适应采样
业务背景 有时候日志的信息比较多,怎么样才可以让系统做到自适应采样呢? 拓展阅读 日志开源组件(一)java 注解结合 spring aop 实现自动输出日志 日志开源组件(二)java 注解结合 s ...