第十二届蓝桥杯省赛真题(C/C++大学B组)

news2025/6/21 18:14:30

目录

#A 空间

#B 卡片

#C 直线

#D 货物摆放

#E 路径

#F 时间显示

#G 砝码称重

#H 杨辉三角形

#I 双向排序

#J 括号序列


#A 空间

#include <bits/stdc++.h>
using namespace std;

int main()
{
	cout<<256 * 1024 * 1024 / 4<<endl;
	
	return 0;
}

#B 卡片

#include <bits/stdc++.h>
using namespace std;

//存储0-9
int arr[10];

bool merge(int n)
{
	//数字n能否被拼成
	while(n > 0)
	{
		if(--arr[n%10] < 0) return false;
		n /= 10;	
	} 
	return true;
}
 
int main()
{
	for(int i = 0;i < 10;i++)
		arr[i] = 2021;
	//遍历 
	for(int i = 1;i < 1000000;i++) 
    	if(!merge(i)) 
    	{
    		cout<<i-1<<endl;
    		break;
		}
    return 0;
}

#C 直线

#include <bits/stdc++.h>
using namespace std;

const int X = 20, Y = 21;

int link[X][Y][X][Y], ans;

int main()
{
	for(int x1 = 0;x1 < X;x1++)
	{
		for(int y1 = 0;y1 < Y;y1++)
		{
			link[x1][y1][x1][y1] = 1;
			for(int x2 = 0;x2 < X;x2++)
			{
				for(int y2 = 0;y2 < Y;y2++)
				{
					// (x1,y1)->(x2,y2)
					if(!link[x1][y1][x2][y2])
					{
						int x = x1;
						int x_offset = x1 - x2;
						int y = y1;
						int y_offset = y1 - y2;
						while(x >= 0 && x < X && y >= 0 && y < Y)
						{
							x -= x_offset;
							y -= y_offset;
						}
						//所有加上偏移量的点都会被访问,全部剔除
						for(x += x_offset,y += y_offset; x >= 0 && x < X && y >= 0 && y < Y;x += x_offset,y += y_offset)
						{
							for(int xx = x,yy = y;xx >= 0 && xx < X && yy >= 0 && yy < Y;xx += x_offset,yy += y_offset)
							{
								link[x][y][xx][yy] = link[xx][yy][x][y] = 1;
							}
						}
						ans++;
					}
				}
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

#D 货物摆放

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ll N = 2021041820210418;
ll ans = 0;
int main()
{
	set<ll> sets;
	//2021041820210418
	//求这个数字的全部因子
	for(ll i = 1;i * i <= N;i++)
	{
		if(N % i == 0)
		{
			sets.insert(i);
			sets.insert(N / i);
		}
	}
	//遍历因子
	for(set<ll>::iterator i = sets.begin(); i != sets.end();i++)
	{
		for(set<ll>::iterator j = sets.begin(); j != sets.end();j++)
		{
			for(set<ll>::iterator k = sets.begin(); k != sets.end();k++)
			if(*i * *j * *k == N) ans++;
		}
	}
				
	cout<<ans<<endl; 
	return 0;
}

#E 路径

#include <bits/stdc++.h>
using namespace std;

const int n = 2021;
int metric[n+1][n+1];

int gcd(int a,int b)
{
	if(a % b == 0) return b;
	return gcd(b, a % b);
}
int lcm(int a,int b)
{
	return a * b / gcd(a,b);
}

int main()
{
	//每条边都给最大值
	for(int i = 0;i <= n;i++)
		for(int j = 0;j <= n;j++)
			metric[i][j] = 99999999;
			
	//计算结点之间的长度
	for(int a = 1;a <= n;a++)
	{
		for(int b = min(n,a+21);b > a;b--)
			metric[a][b] = metric[b][a] = lcm(a,b);
	}
	//弗洛伊德算法
	for(int k = 1;k <= n;k++)
		for(int i = 1;i <= n;i++)
			for(int j = 1;j <= n;j++)
				 metric[i][j] = min(metric[i][j], metric[i][k] + metric[k][j]);
				 
	cout<<metric[1][n]<<endl;
	
	return 0;
}

#F 时间显示

测试样例1

Input:
46800999

Output:
13:00:00

测试样例2

Input:
1618708103123

Output:
01:08:23
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int main()
{
	ll n,second,minutes,hour;
	cin>>n;
	//时  分  秒
	n /= 1000;
	hour = (n / 60 / 60) % 24;
	minutes = (n / 60) % 60;
	second = n % 60;
	
	if(hour < 10) cout<<"0";
	cout<<hour<<":";
	if(minutes < 10) cout<<"0";
	cout<<minutes<<":";
	if(second < 10) cout<<"0";
	cout<<second;
	
	return 0;
}

#G 砝码称重

测试样例1

Input:
3
1 4 6

Output:
10

Explanation:
能称出的 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。
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const int N = 100000+1;
/*
	定义一个二维数组,分为两行
	第一行用来存储可以被称出的重量,第j列表示的就是重量j
	第二行用来临时存放称出的重量,作为重量的中转站
	dp[i][j] == true时,表示重量j可以被称出
	dp[i][j] == false时,表示重量j不能被称出
*/
bool dp[2][N];

int main()
{
	int n,w,sum = 0;
	cin>>n;
	for(int i = 0;i < n;i++)
	{
		cin>>w;
		sum += w;
		//从重量1开始计算
		for(int j = 1;j <= sum;j++)
		{
			if(dp[0][j])
			{
				dp[1][abs(w-j)] = true;
				dp[1][w+j] = true;
			}
		}
		//将第二行数据移动到第一行
		for(int j = 1;j <= sum;j++)
		{
			if(dp[1][j]) dp[0][j] = true;
		}
		//当前砝码可以被称出 
		dp[0][w] = true;
	}
	int ans = 0;
	for(int i = 0;i <= sum;i++)
		if(dp[0][i]) ans++;
	
	cout<<ans<<endl;
	
	return 0;
}

#H 杨辉三角形

测试样例1

Input:
6

Output:
13
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ll arr[45000];

int main()
{
	ll n;
	cin>>n;
	if(n == 1) 
	{
		cout<<1<<endl;
		return 0;
	}
	arr[0] = 1;
	ll count = 1;
	//从第二行开始
	for(int i = 1;i < 45000;i++)
	{
		//从右向左移动 
		for(int j = i;j > 0;j--)
		{
			arr[j] += arr[j-1];
			if(arr[j] == n)
			{
				count += i - j + 1;
				cout<<count<<endl;
				return 0;
			}
		}
		count += (i + 1);
	} 
	//如果某一行的第三列数值已经大于10亿了,说明在这之前都没有对应的数字,这个数字就只能出现在第二列中了 
	//递增数列求和即可 
	cout<<(1 + n)*n / 2 + 2<<endl;
	
	return 0;
}

#I 双向排序

测试样例1

Input:
3 3
0 3
1 2
0 2

Output:
3 1 2

Explanation:
原数列为 (1, 2, 3)。
第 1 步后为 (3, 2, 1)。
第 2 步后为 (3, 1, 2)。
第 3 步后为 (3, 1, 2)。与第 2 步操作后相同,因为前两个数已经是降序了。
#include <bits/stdc++.h>
using namespace std;

const int N = 100000;
int arr[N];

int main()
{
	
	int n,m,p,q;
	cin >>n>>m;
	for(int i = 0;i < n;i++)
		arr[i] = i + 1;
	
	for(int i = 0;i < m;i++)
	{
		cin>>p>>q;
		if(p == 1)
		{
			sort(arr+q-1,arr+n,less<int>());
		}
		else
		{
			sort(arr,arr+q,greater<int>());
		}
	}
	for(int i = 0;i < n;i++)
			cout<<arr[i]<<" ";

	return 0;
}

#J 括号序列

测试样例1

Input:
((()

Output:
5

不会

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1584837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【正点原子Linux连载】第二十九章 Linux RTC驱动实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第二十…

自动驾驶定位算法-递归贝叶斯滤波(Bayes Filter)

自动驾驶定位算法-递归贝叶斯滤波(Bayes Filter) 附赠自动驾驶学习资料和量产经验&#xff1a;链接 贝叶斯滤波器(Bayes Filter)是无人驾驶汽车中高精定位相关的基础技术&#xff0c;同时也是机器人技术中的基础算法。 如上图&#xff0c;开始机器人不知道自己在哪里&#xff…

图解二叉树遍历方法-前序遍历、中序遍历、后序遍历

一、几个概念 二叉树&#xff08;binary tree&#xff09;&#xff1a;是 n&#xff08;n > 0&#xff09;个结点&#xff08;每个结点最多只有2棵子树&#xff09;的有限集合&#xff0c;该集合可为空集&#xff08;称为空二叉树&#xff09;&#xff0c;或由一个根节点和…

RabbitMQ Docker 安装与应用

1.官方镜像 该镜像包含用户操作界面 2.Docker运行&#xff0c;并设置开机自启动 docker run -d --restartalways --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management 默认登录账户和密码 guest 3、使用 队列和交换机绑定

Golang使用PGO优化程序性能

文章目录 参考文章PGO是什么使用PGO的好处PGO做了什么热函数内联什么是内联内联的好处Go默认的内联策略查看内联预算PGO的热函数内联 去虚拟化调用指令高速缓存 PGO有什么缺点可执行程序变大构建时间变长 PGO怎么使用典型的工作流程收集CPU配置文件生产环境启动PGO代码改动重新…

Linux进阶篇:磁盘管理(二):LVM的创建、格式化和使用

Linux磁盘管理&#xff08;二&#xff09;&#xff1a;LVM的创建、格式化和使用 一、LVM原理回顾 LVM的工作原理进行一个总结&#xff1a; (1)物理磁盘被格式化为PV&#xff0c;空间被划分为一个个的PE (2)不同的PV加入到同一个VG中&#xff0c;不同PV的PE全部进入到了VG的PE…

【Android】apk安装报错:包含病毒: a.gray.BulimiaTGen.f

​ 有时候apk安装或者更新时&#xff0c;显示&#xff1a;[高风险]包含病毒: a.gray.BulimiaTGen.f这种bug&#xff1b; 原因&#xff1a;这是手机管家误报病毒。 处理方法&#xff1a;我看网上其他资料可以进行申诉&#xff0c;也可以进行apk加固&#xff0c;我这边尝试用360…

川土微高性能模拟芯片系列产品介绍和应用

一、公司简介 上海川土微电子有限公司是一家成立于2016年的专注于高端模拟芯片研发设计与销售的高科技公司&#xff0c;产品涵盖隔离与接口、驱动与电源、高性能模拟三大产品线以及μMiC战略产品&#xff08; micro-Module in Chip&#xff09;。目前产品已广泛应用于工业控制…

电脑干货:Win10系统中31个运维小技巧,值得收藏

目录 技巧列表 今天给大家分享Win10系统中31个运维小技巧&#xff0c;希望对大家能有所帮助&#xff01; 技巧列表 1、查看电脑IP地址&#xff1a;按WinR打开运行框→输入cmd点确定→输入ipconfig回车就可以看到IP地址了。 2、网页上的文字不能复制怎么解决&#xff1a;按F12…

【Linux】虚拟机连不上外网 (1),2024百度网络安全岗面试真题收录解析

vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTOstatic ONBOOTyes IPADDR? NETMASK? GATEWAY? dns18.8.8.8 dns1144.144.144.144 这两个必填 自我介绍一下&#xff0c;小编13年上海交大毕业&#xff0c;曾经在小公司待过&#xff0c;也去过华为、OPPO等大厂…

SpringBoot学习之Kibana下载安装和启动(三十二)

一、简介 Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。 …

vue3 + potree 渲染点云数据记录

potree 官网示例 前置条件&#xff1a; potree 无法直接加载 LAS&#xff0c;LCD&#xff0c;PLY等格式的点云文件, 需要通过 PotreeConverte 转换为 octree 数据格式&#xff0c;前端渲染中加载转换后的 json 格式 格式转换方向 .las ---- potreeConverter ----> .json…

这4本计算机期刊,含CCF推荐,1个月发表周期,部分期刊剩15篇版面,接受预留

转眼间已进入四月份&#xff0c;正值春景好时节&#xff0c;在踏青赏景之余也别忘了做好科研&#xff08;学业&#xff09;规划。 我方致力于学术论文发表辅导十余年&#xff0c;与100余家国际出版社长期合作&#xff0c;推荐各领域论文至SCI/EI/CNKI收录期刊快速发表&#xf…

Docker 安装 RocketMQ

目录 一、新建两个配置文件 1.1 创建docker-compose.yml文件 1.2 .新建broker.conf文件 二、运行 三、可视化界面 一、新建两个配置文件 1.1 创建docker-compose.yml文件 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports…

实战项目——智慧社区(一)

1、项目介绍 系统功能 登录、修改密码、登出 &#xff08;1&#xff09;首页 &#xff08;1.1&#xff09;数据统计&#xff1a;小区人员统计对比图&#xff0c;占比图 &#xff08;2&#xff09;物业管理 &#xff08;2.1&#xff09;小区管理&#xff1a;小区数据的增删改…

【Cesium学习笔记】二、隐藏控件及按钮

【Cesium学习笔记】二、隐藏控件及按钮 一、隐藏控件二、隐藏cesium图标 Ps:本教程所有代码于同一个工程中&#xff0c;运行npm run dev默认首页为App.vue&#xff0c;只需替换App.vue的内容即可切换不同页面。 将上一节的App.vue保存为类似“加载cesium.vue”这种对应名称。 …

回归预测 | Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测

回归预测 | Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测 目录 回归预测 | Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测 1.Matlab实现…

解决Android Studio Loading Devices问题

目录 一、解决办法&#xff08;普通&#xff09;&#xff1a; 二、解决办法的优化 三、解决办法的进一步优化 问题&#xff1a;windows 11 电脑&#xff0c;每次开机&#xff0c;打开Android Studio,都会显示Loading Devices&#xff0c;连接不上设备。 原因&#xff1a;adb…

SpringBoot和Vue2项目配置https协议

1、SpringBoot项目 ① 去你自己的云申请并下载好相关文件&#xff0c;SpringBoot下载的是Tomcat&#xff08;默认&#xff09;&#xff0c;Vue2下载的是Nginx ② 将下载的压缩包里面的.pfx后缀文件拷贝到项目的resources目录下 ③ 编辑配置文件 &#xff08;主要是框里面的内…

SOCKS代理是如何提高网络性能和兼容性的?

SOCKS代理作为一种网络协议中间件&#xff0c;不仅在提升网络隐私和安全性方面发挥着重要作用&#xff0c;也在提高网络性能和兼容性方面有着不容忽视的影响&#x1f680;。本文将深入探讨SOCKS代理如何通过减少网络延迟&#x1f680;、优化数据传输&#x1f504;、提高跨平台兼…