第十四届蓝桥杯校内模拟赛(第二期) C++题解分享

2024-03-03 05:40

本文主要是介绍第十四届蓝桥杯校内模拟赛(第二期) C++题解分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本人是在学校机房参加的第二期模拟赛有些题目没有忘海涵

若有什么好的建议可以提出来来分享这是本小白第一篇CSDN希望能帮助到大家

320c9304cf764e01a1c12e51ae9dca65.png 第一题没啥好说的就是直接暴力枚举 这边直接上代码 (稍微注释)  答案:2048

#include <bits/stdc++.h>using namespace std;
// 9 二进制 :1001 
int num[50];
bool judge(int x){  int cnt=0;while(cnt!=6){   // cnt 表示位数  num[++cnt]=x%2;  // 把传进来的数的二进制位数从后往前录入 num中 x=x/2;  // 从后往前分离出每位二进制数字 }for(int i=1;i<=6;i++){   // 数位从1到6遍历判断不等于0就退出到主函数继续循环再到judge函数  if(num[i]!=0)return false;}      return true; // 表示六位二进制数都等于0并把该数传回主函数并输出 
}
int main(){for(int i=2023;i<10000;i++){if(judge(i)){cout<<i;break;}}	return 0;
}

343890902f514e2c9808c8e3556791bb.png

 第二题大家可以用任何方法我用excel表秒出 这里也付上代码 答案:26390

#include<bits/stdc++.h>
using namespace std;
// excel
int month[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
bool isleapyear(int y)
{if((y%4==0&&y%100!=0)||(y%400==0)) // 闰年判断  return true;return false;
}
int main()
{int y=1949,m=10,n=1,s;s=31*2+30; // 判断到1950年有还有多少天 for(int i=1950;i<=2021;i++){if(isleapyear(i))s+=366;elses+=365;}cout<<s;return 0;
}

b661c3ac8ce0476e882411ee8d87d714.png

 第三题和第一题思路差不了多少只要熟悉了解进制互相转化模拟出即可 答案:1038

#include <bits/stdc++.h>using namespace std;typedef long long ll;
ll hex[8];
//  hex 16进制 
// 同第一题的原理一样 bool judge(int x){ll xx=x,sum=0;int cnt=0;while(x){ll t=x%10;sum+=t*hex[cnt++];x=x/10;}if(sum%xx==0)return true;return false;
}
int main(){hex[0]=1;for(int i=1;i<=7;i++){hex[i]=hex[i-1]*16;}	for(int i=10;i<8518;i++){if(judge(i)){cout<<i;break;}}return 0;
}

第四题没题目数据不全 本人也做错了思路大概是dp然后枚举遍历每个点(本人模拟赛时脑子傻了选错方法去做) 答案好像是592大家还是等待官方答案吧哈哈哈

9cdf8a80536c401d998e44b29ec71166.png

 第五题质数分解呢 本人先用线性筛选质数 复杂度O(N) 习惯了哈哈哈都是防爆的错zzz 接着用个01背包思想可以解出 代码如下  答案 :33

#include <bits/stdc++.h>  //思路 先得将素数表示再用01背包思想 using namespace std;
const int N=2023;
int dp[N],prime[N],cnt=0; 
bool isprime[N];
//  isprime[i]=true 表示这个数不是素数 ,=false 表示为素数
// prime[0~cnt-1] 一共cnt个数保存了所有的元素 
void shift(){ // 模板 筛选素数 o(n)时间复杂度 isprime[1]=1;for(int i=2;i<N;i++){if(!isprime[i]){prime[cnt++]=i;}for(int j=0;j<cnt&&prime[j]*i<N;j++){isprime[i*prime[j]]=1;if(i%prime[j]==0)break;}}
}
int main(){shift();     // 以下注释的是输出素数的个数以及循环遍历输出各个素数  后来自己补的
//	cout<<cnt<<endl; 
//	for(int i=0;i<cnt;i++)
//		cout<<prime[i]<<endl;memset(dp,-1,sizeof(dp));  // 这里是动态规划的01背包问题思维 dp[0]=0;for(int i=0;i<cnt;i++){for(int j=2022;j>=prime[i];j--){if(dp[j-prime[i]]!=-1)dp[j]=max(dp[j],dp[j-prime[i]]+1);}}cout<<dp[2022];}

49bf808e9e274332b621da6c55a8b95c.png

 编程题第一题没啥好说的数据还有一对我也没给出来 大家自行理会哈哈哈哈

#include <bits/stdc++.h>using namespace std;typedef long long ll;
ll t,c,s;
//每秒拷贝c/t字节,共需s/(c/t)=s*t/c; 
int main(){scanf("%lld %lld %lld",&t,&c,&s);ll ans=s*t/c;printf("%lld",ans-t);
}

047373621970493791856994a8356d62.png

第三题编程(顺序搞错了哈哈下面一题是第二题)只截到这里 还有的是输入banana 输出 bananab  输入noon  输出noon

这题需要注意的是 双指针后的枚举遍历分割最优对称中心 (注意字符串长度的奇数和偶数耶)

#include<bits/stdc++.h>using namespace std;bool judge(int start,int end,string s){while(start<end){if(s[start]!=s[end]) break;start++;end--;}if(start==end||s[start]==s[end])  //   这里判断字符串奇数时没事偶数的话需要或 return true;return false;
}int main(){string str;cin>>str;int end=str.size()-1; //  int start=end; // 分割点的位置 start前全补后面 for(int i=0;i<str.size();i++){ // 枚举哪个分割点最好 if(judge(i,end,str)){  // 判断 start=i;break;}} for(int i=start-1;i>=0;i--){ //  字符串的start 往end方向遍历判断满足条件是否是回文串 str+=str[i];}cout<<str<<endl;return 0;
}

b8779ca6096344fca7a19687b29ca45d.png

第二题编程是这个哈哈哈思路呢是用stl 里面map的映射哈哈哈 大家用集合也是可以的因为没有重复元素嘛嘿嘿 以下为大家献上代码

#include <bits/stdc++.h>using namespace std;int n;// 查重的话可以用stl的set函数 (集合思想嘛懂得都懂) 
map<string,int> mp;  // stl的map函数 把数组的东西映射到后一个上  
int main(){cin>>n;string s; for(int i=1;i<=n;i++){cin>>s;if(mp.find(s)==mp.end()){cout<<s<<endl;mp[s]=1;}}return 0;
}

 编程倒二没题目本人也记不清楚这么写了大概思路也可以枚举吧哈哈哈估计本人也是没做对太菜了呜呜呜

87353a02f481460a85ef8fba59903d69.png

 编程倒一题这里样例输出是12  思路想的有点久大概就是树状数组 贪心 小枚举   需要特别注意的是这题数据要求稍微有点严格为了防爆这里取的是极限为1e6+10 代码给各位附上

#include <bits/stdc++.h>using namespace std;typedef long long ll;
const int N=1e6+10;
typedef struct Node{ll val;int idx;
}Node; 
Node p[N];
int n;
int tr[N];
bool cmp(Node x,Node y){if(x.val==y.val)return x.idx<y.idx;return x.val<y.val;
}
int lowbit(int x){return x&(-x);
}
void update(int x){while(x<=n){tr[x]+=1;x+=lowbit(x);}
}
int ask(int x){int res=0;while(x){res+=tr[x];x-=lowbit(x);}return res;
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld",&p[i].val);p[i].idx=i;}sort(p+1,p+n+1,cmp);ll res=0;for(int i=n;i>=1;i--){int bias=ask(p[i].idx);res=res+(i-p[i].idx+bias)*p[i].val;update(p[i].idx);}printf("%lld\n",res);
}

这篇关于第十四届蓝桥杯校内模拟赛(第二期) C++题解分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768626

相关文章

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函