第十二届蓝桥杯2021年4月c/c++ B组省赛第一场赛后总结_西安理工大学蓝桥杯四月-程序员宅基地

技术标签: c++  蓝桥杯  

第十二届蓝桥杯c/c++ B组省赛第一场赛后总结

A:空间

【问题描述】
小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位
二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问
256MB 的空间可以存储多少个 32 位二进制整数?

题解1字节占8位,1MB=1024KB,1KB=1024B 256 * 1024 * 1024 / 4 = 67108864
答案67108864

B:卡片

【问题描述】
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。
小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1拼到多少?
提示:建议使用计算机编程解决问题。

题解
签到题,模拟即可

#include<iostream>

using namespace std;
int a[10];
bool flag=false;
int main(){
    
    int res=1;
    while(1){
    
    	int num=res;
    	while(num){
    
    		int t=num%10;
    		a[t]+=1;
    		num/=10;
    		if(a[t]>2021) flag=true;
		}
		if(flag) break;
		res++;
	}
	cout<<res-1;
    return 0;
}

答案3181

C:直线

【问题描述】
在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。
给定平面上 2 × 3 个整点 {(x, y)|0 ≤ x < 2, 0 ≤ y < 3, x ∈ Z, y ∈ Z},即横坐标是 0 到 1 (包含 0 和 1) 之间的整数、纵坐标是 0 到 2 (包含 0 和 2) 之间的整数的点。这些点一共确定了 11 条不同的直线。
给定平面上 20 × 21 个整点 {(x, y)|0 ≤ x < 20, 0 ≤ y < 21, x ∈ Z, y ∈ Z},即横坐标是 0 到 19 (包含 0 和 19) 之间的整数、纵坐标是 0 到 20 (包含 0 和 20) 之间的整数的点。请问这些点一共确定了多少条不同的直线。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解:待补
答案40257

D:货物摆放

【问题描述】
小蓝有一个超大的仓库,可以摆放很多货物。
现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。
小蓝希望所有的货物最终摆成一个大的立方体。即在长、宽、高的方向上分别堆 L、W、H 的货物,满足 n = L × W × H。
给定 n,请问有多少种堆放货物的方案满足要求。
例如,当 n = 4 时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2 × 2 × 1、4 × 1 × 1。
请问,当 n = 2021041820210418 (注意有 16 位数字)时,总共有多少种方案?
提示:建议使用计算机编程解决问题。
题解
先求出该数的所有因子,再暴力枚举。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=2021041820210418;
vector<ll> a;
void divide(ll x)
{
    
    for (ll i = 1; i <= sqrt(N); i ++ )
        if(x%i==0)
        {
    
            	a.push_back(i);
				a.push_back(N/i);
        }
}
int main()
{
    
	divide(N);
	ll res=0;
    for(ll i=0;i<a.size();i++)
       for(ll j=0;j<a.size();j++)
          for(ll k=0;k<a.size();k++)
             if(a[i]*a[j]*a[k]==N) res++;
	cout<<res;
    return 0;
}

答案2430

E:路径

【问题描述】
小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。
小蓝的图由 2021 个结点组成,依次编号 1 至 2021。
对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。
例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。
请计算,结点 1 和结点 2021 之间的最短路径长度是多少。
提示:建议使用计算机编程解决问题。

题解:
求最短路,板子题

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2030;
int n,m;
int g[N][N];
int dist[N];
bool st[N];

int bei(int a,int b){
    
	int t=a*b;
	return t/__gcd(a,b);
}
int dijkstra(){
    
    memset(dist,0x3f,sizeof dist);
    dist[1]=0;
    for(int i=1;i<=2021;i++){
    
        int t=-1;
        for(int j=1;j<=2021;j++)
        if(!st[j] && (t==-1 || dist[t]>dist[j]))
           t=j;
        st[t]=true;
        for(int j=1;j<=2021;j++)
            dist[j]=min(dist[j],dist[t]+g[t][j]);
    }
    if(dist[2021]==0x3f3f3f3f) return -1;
    return dist[2021];
}
int main(){
    
    memset(g,0x3f,sizeof g);
    for(int i=1;i<=2021;i++){
    
    	for(int j=i+1;j<=2021;j++){
    
    		if(j-i<=21) g[i][j]=min(g[i][j],bei(i,j));
		}
	}
    printf("%d",dijkstra());
    return 0;
}

答案:10266837

F:时间显示

【问题描述】
小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
【输入格式】
输入一行包含一个整数,表示时间。
【输出格式】
输出时分秒表示的当前时间,格式形如 HH:MM:SS,其中 HH 表示时,值
为 0 到 23,MM 表示分,值为 0 到 59,SS 表示秒,值为 0 到 59。时、分、秒
不足两位时补前导 0。
【样例输入 1】
46800999
【样例输出 1】
13:00:00
【样例输入 2】
1618708103123
【样例输出 2】
01:08:23
【评测用例规模与约定】
对于所有评测用例,给定的时间为不超过 10的18次方 的正整数。
题解:
模拟题,唯一需要注意的是1秒=1000毫秒

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n;
ll h, m, s;
int main() {
    
    scanf("%lld", &n);
    h=n/3600000;
    m=(n-h*3600000)/60000;
    s=(n-h*3600000-m*60000)/1000;
    if(h>23) h%=24;
    printf("%02lld:%02lld:%02lld\n", h, m, s);
    //%02lld (右对齐,答案宽度不足2位的补0)
    return 0;
}

G:砝码称重

在这里插入图片描述

【样例说明】
能称出的 10 种重量是:1、2、3、4、5、6、7、9、10、11。
1 = 1;
2 = 6 − 4 (天平一边放 6,另一边放 4);
3 = 4 − 1;
4 = 4;
5 = 6 − 1;
6 = 6;
7 = 1 + 6;
9 = 4 + 6 − 1;
10 = 4 + 6;
11 = 1 + 4 + 6。
【评测用例规模与约定】
对于 50% 的评测用例,1 ≤ N ≤ 15。
对于所有评测用例,1 ≤ N ≤ 100,N 个砝码总重不超过 100000。
题解:待补

H:杨辉三角形

【问题描述】
下面的图形是著名的杨辉三角形:
在这里插入图片描述
如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:
1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, …
给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?
【输入格式】
输入一个整数 N。
【输出格式】
输出一个整数代表答案。
【样例输入】
6
【样例输出】
13
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ N ≤ 10;
对于所有评测用例,1 ≤ N ≤ 1000000000。
题解:待补

I :双向排序

在这里插入图片描述
【样例输入】
3 3
0 3
1 2
0 2
【样例输出】
3 1 2
【样例说明】
原数列为 (1, 2, 3)。
第 1 步后为 (3, 2, 1)。
第 2 步后为 (3, 1, 2)。
第 3 步后为 (3, 1, 2)。与第 2 步操作后相同,因为前两个数已经是降序了。
在这里插入图片描述
题解
不会,只能sort骗分

#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N];
bool cmp(int a,int b)
{
    
    return a > b;
}
int main()
{
    
    int n, m;
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++)
        a[i]=i;
    while(m--){
    
        int p,q;
        scanf("%d%d",&p,&q);
        if(p==0)
            sort(a+1, a+q+1,cmp);
        else
            sort(a+q,a+n+1);
    }
    for(int i=1;i<=n;i++)
        printf("%d ", a[i]);
    return 0;
}

J:括号序列

在这里插入图片描述

【评测用例规模与约定】
对于 40% 的评测用例,|s| ≤ 200。
对于所有评测用例,1 ≤ |s| ≤ 5000。
题解:待补

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_51876133/article/details/115920668

智能推荐

【mmdet3d配置】win11+Debian子系统_win11 debian-程序员宅基地

文章浏览阅读1k次。mmdet3d +win11+Debian子系统不想安装双系统,又馋windows的UI,还需要linux的生产力,毕竟很多代码暂时只支持linux。所以就有了这篇文章~_win11 debian

Environment.Exit(0)和Environment.Exit()方法-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏17次。net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法2009年04月09日 23:59:00 fengloveyun 阅读数:1470.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法.net类库已经帮助我们实现了窗口的关闭,如果此窗口是系统的主窗口,关闭此窗口即应..._environment.exit

JAVA中十四种常见开发工具及其特点-程序员宅基地

文章浏览阅读125次。1、JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK)。开发人员和最终用户可以利用这个工具来开发java程序。  JDK简单易学,可以通过任何文本编辑器(如:Windows 记事本、UltrEdit、Editplus、FrontPage以及dreamweaver..._五种java开发工具的使用现状和特点

解决XP下鼠标单击变双击的问题_xp鼠标自动双击-程序员宅基地

文章浏览阅读2.1k次。我的光电鼠标,按左键经常出现单击变双击的情况,有时写Blog的时候,在浏览器的多窗口切换时,老是因为这个问题把辛辛苦苦写的内容就这么关闭,非常郁闷。虽然可以通过外接鼠标解决问题,但有时候毕竟不是那么方便。记得曾经见过某个软件能解决这个问题,今天找了下,果然找到了,还是cnbeta出品的。DoubleClickFix是一个鼠标双击修正工具,对于旧鼠标特别有效果。下面是这个软件的介绍:用久了都会出_xp鼠标自动双击

mysql注入ctf_Web安全原理剖析-SQL Injection-程序员宅基地

文章浏览阅读1.2k次。0x01 预备知识Mysql的相关知识在MySQL 5.0之后,MySQL默认在数据库中存放一个”information_schema”的库,比较重要的三个表名:SCHEMATA、TABLES以及COLUMNS。information_schema.schemata:存储了所有库名。struct该表中记录库名的字段为:SCHEMA_NAME,因此可以如下注入:-1' union select 1,..._ctf web md5 注入

推荐 :数据科学与大数据技术专业特色课程研究-程序员宅基地

文章浏览阅读1w次,点赞18次,收藏46次。在我国,数据科学与大数据技术专业的建设已成为新的热点话题。在系统调研世界一流大学数据科学专业建设现状的基础上,从特色课程视角重点分析加州大学伯克利分校、约翰·霍普金斯大学、华盛顿大学、纽约大学、斯坦福大学、卡内基梅隆大学、哥伦比亚大学、伦敦城市大学等8所大学的数据科学专业,提出数据科学与大数据技术这一新专业应重视的10门特色课程,并分析了现阶段我国数据科学教育中普遍存在的8种曲解现象及对策建议。_数据科学与大数据技术课程体系

随便推点

雨流法工具箱rainflow进行疲劳分析教程(含雨流法rainflow工具箱下载及安装教程)_matlab中rainflow函数-程序员宅基地

文章浏览阅读6.5k次,点赞4次,收藏23次。雨流计数法又可称为“塔顶法”,是20世纪50年代由英国的Matsuiski和Endo 两位工程师提出的, 距今已有50 多年。雨流计数法主要用于工程界, 特别在疲劳寿命计算中运用非常广泛。把应变-时间历程数据记录转过90°,时间坐标轴竖直向下, 数据记录犹如一系列屋面, 雨水顺着屋面往下流, 故称为雨流计数法。雨流计数法对载荷的时间历程进行计数的过程反映了材料的记忆特性,具有明确的力学概念,因此该..._matlab中rainflow函数

vscode中python自定义包的模块如何导入其子包模块_vscode使用python导入自定义模块-程序员宅基地

文章浏览阅读3.2k次。本文在个人博客的链接问题描述如图所示,对于python,有一个自定义包parent,它里面还有一个子包child,当你在parent.module1中import child.module2时,vscode会给你报错,说找不到这个包。当你单独运行module1.py的时候,可以正常运行,但是当你在parent包外层的main.py中import parent.module1时,就会报错。详细说明目录结构为:main.pyparent__init__.pymodule1.py_vscode使用python导入自定义模块

flume学习01-flume介绍_根据指导书学习flume的使用,可以采用不同的flume数据源,学会flume的配置要求不能-程序员宅基地

文章浏览阅读396次。最近学习了下flume的使用,以配合公司将日志系统独立出来的开发,官网用户手册:http://flume.apache.org/FlumeUserGuide.htmlflume架构a. 组件先搬上官网上的架构图从图上可以看到flume的事件定义成了一个数据流,一个数据流组成了Agent,其实就是JVM实例,每个Agent包含三个组件:Source_根据指导书学习flume的使用,可以采用不同的flume数据源,学会flume的配置要求不能

Github上一款一键生成数据库文档的大利器!_github 支持达梦数据库生成表结构文档-程序员宅基地

文章浏览阅读3.1k次,点赞16次,收藏91次。文章目录介绍快速开始表结构脚本基于 Java 代码引入 screw 及相关依赖代码编写基于 Maven 插件引入screw及相关依赖配置maven-plugins手动执行生成数据库文档成品地址介绍今天看了 Guide老哥 公众号(需要的朋友可以关注一波: JavaGuide)中的一篇文章,发现了一款好用的数据库文档生成工具。在项目中开发中,有没有遇到过编写数据库说明文档。一般情况下,数据库说明文档中有着大量的数据库表结构,如果手动进行维护,将会耗费大量时间,这样就不能愉快的进行摸鱼了。所以呢,为了解_github 支持达梦数据库生成表结构文档

充电器pps功能是什么_倍思18W快充充电器拆解,这套快充方案天猫精灵充电器都在用...-程序员宅基地

文章浏览阅读599次。最近我们拿到Baseus倍思18W USB PD快充充电器,这款产品机身光滑,棱边圆润,除了支持18W功率充电器里常规三组固定电压档位外,还支持两组PPS电压档位,能够很好的支持18W以下用电设备,此外最大18W PD快充功率也能满足iPhone11等智能手机的日常充电。下面我们就和大家分享这款产品的拆解,看看其内部用料如何。一、倍思18W PD充电器外观倍思典型的黄白配色包装盒,包装盒上端带有挂..._快充 pps

python web服务器性能,pythonwebserver服务器性能对比-程序员宅基地

文章浏览阅读339次。因为换了nginx就不再使用mod_wsgi来跑web.py应用了,现在用的是gevent-wsgi,效果还不错。但还是想试试别的,比如传说中超级猛的meinheld什么的。 软硬件环境硬件:一台04年初购置的IBM X235服务器,CPU为Xeon 2.4G两颗,内存1G,100M网卡。软件:Ubuntu Server 10.04 LTSApache 2.2.14Nginx 0.7.65Pyth..._pywsgi 与 run 性能差异