第十四届蓝桥杯大赛软件赛国赛C/C++研究生组

研究生C++国赛软件大赛

    • 题一:混乘数字
    • 题二:钉板上的正方形
    • 题三:整数变换
    • 题四:躲炮弹
    • 题五:最大区间

题一:混乘数字

在这里插入图片描述

有一点像哈希表:
首先定义两个数组,拆分ab和n
然后令n = a*b 查看两个表对应的十进制位数和个数是否相同
还需要定义一个set,用于验证当前的n是否已经被计算过了
是因为2 * 8== 4 * 4 == 16

#include<bits/stdc++.h>
using namespace std;
set<int> s;//
int StoredAB[10],StoredN[10];//0-9一共10个珠子
int ans;
//验证
bool test(int n,int a,int b){//初始化两个数组memset(StoredAB,0,sizeof(StoredAB));memset(StoredN,0,sizeof(StoredN));while(n){StoredN[n%10]++;n/=10;}while(a) StoredAB[a%10]++,a/=10;while(b) StoredAB[b%10]++,b/=10;for(int i=0;i<=9;i++){if(StoredAB[i]!=StoredN[i]) return false;}return true;
}
int main()
{for(int a=1;a<1000000;a++){for(int b = 1;b<1000000;b++){int n = a*b;if(n>1000000) break;if(test(n,a,b)){if(s.find(n)==s.end()){ //没有set集合当中的话ans++;s.insert(n);}}}}cout<<ans<<endl;return 0;
}

题二:钉板上的正方形

在这里插入图片描述
在这里插入图片描述

下面给出的代码在表示其他正方形定点时用到了三角形的旋转
在这里插入图片描述
下面给出代码:

#include <bits/stdc++.h>
using namespace std;
using ll = long long;int a[10][10] = 
{{1,1,0,1,0,1,1,1,1,1},{1,1,1,0,0,1,1,1,1,0},{1,1,0,0,1,0,1,1,1,1},{1,0,1,1,0,1,1,1,1,0},{1,0,1,0,1,1,1,1,0,0},{1,0,0,1,0,1,0,1,0,1},{1,1,1,1,1,1,1,1,1,0},{0,1,1,1,1,1,1,1,1,0},{0,1,1,0,1,0,1,1,1,1},{1,0,1,0,0,1,0,1,0,0}
};struct edge {int x, y;bool operator <(const edge &e) const {return x * x + y * y < e.x * e.x + e.y * e.y;}
};int main() {set<edge> st;auto test = [&](int i, int j) {if(i < 0 || i >= 10 || j < 0 || j >= 10) return false;return a[i][j] == 1;};for(int i = 0;i < 10;i++) {for(int j = 0;j < 10;j++) {if(a[i][j] != 1) continue;for(int x = i;x < 10;x++) {for(int y = j;y < 10;y++) {if(x == i && y == j) continue;if(a[x][y] != 1) continue;int dx = x - i, dy = y - j;if(test(i + dy, j - dx) && test(i + dx + dy, j + dy - dx)) {st.insert(edge{dx, dy});}}}}}cout << st.size() << endl;
}

题三:整数变换

在这里插入图片描述

这道题比较简单 直接给代码嗷:

#include <iostream>
using namespace std;
int main()
{// 请在此输入您的代码int n;cin>>n;int mintues = 0;while(n>0){int temp = n;int sum=0;while(temp>0){sum+=temp%10;temp/=10;}n-=sum;mintues++;}cout<<mintues;return 0;
}

题四:躲炮弹

在这里插入图片描述

本题有一个点就是他给的距离n是基于数轴上的原点的距离,题意没有说的很清楚
其他的就是需要向左向右寻找能够躲避炮弹的点

#include <iostream>
#include <algorithm>
using namespace std;// 判断m是否安全:不被任何x∈[L, R]整除
bool is_safe(int m, int L, int R) {if (m < L) return true;           // m小于L时安全if (L <= m && m <= R) return false; // m在区间内则不安全for (int d = 1; d * d <= m; ++d) {if (m % d != 0) continue;int a = d;int b = m / d;// 检查因数对是否在区间内,因数都在区间内,则一定不安全if ((a >= L && a <= R) || (b >= L && b <= R)) {return false;}}return true;
}int main() {int n, L, R;cin >> n >> L >> R;// 检查原始位置是否安全bool original_safe = true;if (L <= n && n <= R) { // 在区间内,一定不安全original_safe = false;} else {  // 在区间外,通过遍历因数是否在区间内判断原始位置是否安全original_safe = true;for (int d = 1; d * d <= n; ++d) {if (n % d == 0) {int a = d, b = n / d;if ((a >= L && a <= R) || (b >= L && b <= R)) {original_safe = false;break;}}}}if (original_safe) {cout << 0 << endl;return 0;}// 候选解A:向左移动到最近的安全位置int candidateA = -1;for (int m = n - 1; m >= 0; --m) {if (is_safe(m, L, R)) {candidateA = n - m;break;}}// 候选解B:向右移动到最近的安全位置int candidateB = -1;for (int m = n + 1; ; ++m) {if (is_safe(m, L, R)) {candidateB = m - n;break;}}// 如果候选解A不存在,则只考虑候选解Bif (candidateA == -1) {cout << candidateB << endl;} else if (candidateB == -1) {cout << candidateA << endl;} else {cout << min(candidateA, candidateB) << endl;}return 0;
}

题五:最大区间

在这里插入图片描述

/*
使用单调栈求解左右边界
1.列表项找到左边界:找到第一个比当前元素小的位置left[i],则Ai能够作为最小值扩展到left[i]+1位置
2.列表找到右边界:找出第一个比当前元素小的位置right[i],则Ai能够作为最小值扩展到right[i]-1位置
这样Ai作为最小值的最大子数组长度为right[i]-left[i]-1;
*/
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
long long n,a[N],minn;
stack <long long>st;//栈int main( )
{//根据题面得(R-L+1)*a[i]要尽可能大,所以我们可以从l[i]和r[i]下手//我们要求都要比他的区间要r[i]-l[i]-1+1//即可以完成第31行的代码scanf("%lld",&n);vector <int> l(n,-1);//答案数组1for(int i=0;i<n;i++)scanf("%lld",&a[i]);for(int i=0;i<n;i++){while(!st.empty() && a[st.top()]>=a[i])st.pop( );if(!st.empty())l[i]=st.top( );st.push(i);}//找左边第一个比他小的元素的下标(注意是下标)while(!st.empty())st.pop( ); //清空栈,避免干扰。vector <int> r(n,n);//答案数组2for(int i=n-1;i>=0;i--){while(!st.empty() && a[st.top()]>=a[i])st.pop( );if(!st.empty())r[i]=st.top( );st.push(i);}//找右边第一个比他小的元素的下标(注意是下标)for(int i=0;i<n;i++){minn=max(minn,(r[i]-l[i]-1)*a[i]);}printf("%lld",minn);
}

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

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

相关文章

系统与网络安全------网络通信原理(2)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 物理层解析 物理层概述 物理层是TCP/IP模型的最底层物理层数据传输提供稳定的物理连接 物理层功能 定义设备的物理连接的标准和特性&#xff0c;比如接口形状&#xff0c;大小定义电气特性&#xff0c;高低…

内容中台的数字化管理核心是什么?

数字化整合与系统协同 现代企业的内容管理正经历从分散式架构向数字化整合的范式转变。通过将内容管理系统与文档管理技术深度耦合&#xff0c;组织能够打破数据孤岛&#xff0c;实现跨部门、跨平台的资源互通。例如&#xff0c;基于元数据分类的标准化体系&#xff0c;不仅提…

Python爬虫第二战(使用xpath爬取网站数据)

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 使用xpath爬取猪八戒网站数据 前言 前言 今天学习的主要是关于Python使用xpath来爬取猪八戒网的网页知识的理解和应用 #1.获…

进程同步和进程互斥的区别

如大家所了解的&#xff0c;进程互斥是由互斥资源引起的&#xff0c;即各进程之间共享互斥资源的使用权&#xff0c;这种竞争没有确定的必然联系&#xff0c;哪个进程竞争到互斥资源的使用权&#xff0c;则该资源就归哪个进程使用&#xff0c;从而获得所需资源的进程就可以获得…

ArkTS语言基础之函数

前言 臭宝们终于来到了ArkTS基础之函数&#xff0c;今天我们来学习一下ArkTS的函数的相关知识&#xff0c;上一节中也有一些函数的基础知识。 函数声明 函数声明引入一个函数&#xff0c;包含其名称、参数列表、返回类型和函数体,在下面的例子中&#xff0c;我们声明了一个名…

redis中的hash

Redis中的hash是什么 Hash: 哈希&#xff0c;也叫散列&#xff0c;是一种通过哈希函数将键映射到表中位置的数据结构&#xff0c;哈希函数是关键&#xff0c;它把键转换成索引。 Redis Hash&#xff08;散列表&#xff09;是一种 field-value pairs&#xff08;键值对&#x…

弹簧质点系统(C++实现)

本文实现一个简单的物理算法&#xff1a;弹簧质点系统&#xff08;Mass-Spring System&#xff09;。这是一个经典的物理模拟算法&#xff0c;常用于模拟弹性物体&#xff08;如布料、弹簧等&#xff09;的行为。我们将使用C来实现这个算法&#xff0c;并结合链表数据结构来管理…

领域大模型

领域技术标准文档或领域相关数据是领域模型Continue PreTrain的关键。 现有大模型在预训练过程中都会加入书籍、论文等数据&#xff0c;那么在领域预训练时这两种数据其实也是必不可少的&#xff0c;主要是因为这些数据的数据质量较高、领域强相关、知识覆盖率&#xff08;密度…

Wincc项目被锁定无法打开

Wincc项目被锁定无法打开 解决方法 解决方法 一般这种情况是因为项目打开的时候直接关机导致的。 删除项目文件夹的ProjectOpened.lck的文件夹即可 然后即可正常打开项目

SpringBoot3笔记

简介&#xff1a; springboot整合了springframework&#xff0c;整合了许多配置&#xff0c;让我们能够快速创建一个以springframework为基础的项目。 问题&#xff1a; 到目前为止&#xff0c;你已经学习了多种配置Spring程序的方式。但是无论使用XML、注解、Java配置类还是…

DeepSeek和文心一言的区别

文章目录 1.开发公司&#xff1a;2.应用场景&#xff1a;3.训练数据&#xff1a;4.模型架构&#xff1a;5.技术特点&#xff1a;6.语言风格&#xff1a;7.开源性&#xff1a;8.界面与用户体验&#xff1a; 1.开发公司&#xff1a; DeepSeek 由杭州深度求索人工智能基础技术研究…

Windows 10 安装Mysql 8

安装准备 下载 MySQL Windows ZIP版&#xff08;无安装程序&#xff09;&#xff1a; 进入官网&#xff1a;https://dev.mysql.com/downloads/mysql/ 选择 Windows → 下载 ZIP Archive&#xff0c;例如&#xff1a; mysql-8.0.34-winx64.zip 如果你的电脑没有安装 VC Redi…

ARM分拣机vs传统PLC:实测数据揭示的4倍效率差

在苏州某新能源汽车零部件仓库&#xff0c;凌晨3点的分拣线上依然灯火通明。8台搭载ARM Cortex-A72处理器的智能分拣机正在以每秒3件的速度处理着形状各异的电池包组件&#xff0c;它们通过MES系统接收订单信息&#xff0c;自主规划最优路径&#xff0c;将不同规格的零部件精准…

使用python访问mindie部署的vl多模态模型

说明 今天使用mindie1.0部署了qwen2_7b_vl模型&#xff0c;测试过程出现一些问题&#xff0c;这里总结下。 问题1&#xff1a;transformers版本太低 报错信息&#xff1a; [ERROR] [model_deploy_config.cpp:159] Failed to get vocab size from tokenizer wrapper with ex…

vscode 跳转失败之c_cpp_properties.json解析

{"configurations": [{"name": "Linux", // 配置名称&#xff0c;对应当前平台&#xff0c;VS Code 中可选"includePath": ["${workspaceFolder}/**", // 包含当前工作区下所有文件夹的头文件&#xff08;递归&…

飞速(FS)解决方案验证实验室搬迁升级,赋能客户技术服务

飞速&#xff08;FS&#xff09;解决方案验证实验室近日顺利完成搬迁升级&#xff0c;标志着飞速&#xff08;FS&#xff09;在解决方案可行性验证、质量保障以及定制化需求支持方面迈上新台阶&#xff0c;进一步提升了产品竞争力和客户信任度。 全新升级的实验室定位为技术验证…

安装kerberos认证的cdh环境

1、服务端安装 1.1 安装wget yum -y install wget 由于本地已安装过wget&#xff0c;所以显示Nothing to do 1.2 进入 home 目录 cd /home 1.3 下载centos6.7.iso文件&#xff0c;并挂载 wget https://archive.kernel.org/centos-vault/6.7/isos/x86_64/CentOS-6.7-x86_64…

MySQL基础 [六] - 内置函数+复合查询+表的内连和外连

内置函数一般要用select调用 内置函数 日期函数 current_date函数 current_date函数用于获取当前的日期。如下&#xff1a; current_time函数 current_time函数用于获取当前的时间。如下&#xff1a; now函数 now函数用于获取当前的日期时间。如下&#xff1a; date函数 dat…

CS内网渗透 - 如何通过冰蝎 Webshell 上线 Weblogic 服务器到 Cobalt Strike 并绕过杀软检测(360、火绒)?

目录 1. 冰蝎连接上 Weblogic 服务器如何上线到 Cobalt Strike 2. 服务器安装杀毒工具如何绕过杀软上线到 Cobalt Strike 2.1 杀软对 Webshell 命令执行的检测及绕过 2.2 杀软对 Cobalt Strike 上线木马的检测及绕过 2.3 杀软对这两方面的限制及综合绕过 3. 如何生成免杀…

[ctfshow web入门] web10

前置知识 cookie Cookie是网站存储在浏览器中的小数据片段&#xff0c;用于识别用户、保持登录状态或记住偏好设置。 也就是说&#xff0c;我以会员A的身份登录了网站&#xff0c;网站会发送一段cookie(会员卡)给我&#xff0c;上面写着会员卡A&#xff0c;下一次我再访问&am…