首页 > 编程语言 >免费,C++蓝桥杯比赛历年真题--第14届蓝桥杯省赛真题(含答案解析和代码)

免费,C++蓝桥杯比赛历年真题--第14届蓝桥杯省赛真题(含答案解析和代码)

时间:2024-06-07 15:04:40浏览次数:8  
标签:std 真题 -- ++ 蓝桥 int mp include 节点

C++蓝桥杯比赛历年真题–第14届蓝桥杯省赛真题

一、选择题

答案:A

解析: C++中 bool 类型与 char 类型一样,都需要1 byte。一些其他类型的占用字节数:short:2 byte,int:4byte,long long:8 byte,double:8byte,故答案为A。

答案:C

解析:

A中结构体中可以定义成员变量,也可以定义只有该结构体类型变量可调用的成员函数;

B中所谓结构体的继承特性,指的是在一个已经定义好的旧结构体的基础上,创建一个新结构体,并且新结构体可以复用旧结构体的成员和函数;

C正确,D中构造函数可以在创建结构体变量时,按照函数预设的构造规则将对应成员变量赋值,并执行其他操作。构造函数在创建结构体类型的对象时自动执行,因此无法由用户主动调用,也没有返回值,故答案为C。

答案:C

解析:由等比数列的求和可知:一个高度为 h的满二叉树含有 2h-1 个结点。

本题的 62 个结点,相当于高度为6 的满二叉树的 2^6 -1=63个结点中,再去掉最底层最右端的一个结点,故答案为C。

答案:C

解析:数组的索引是从0开始的,所以如果一个数组有n个元素,第一个元素的索引是0,最后一个元素的索引是n-1,而不是数组的长度故答案为C。

答案:A

解析:代码功能是计算一个递归函数 f(k) 的值,其中 f(1) = 3,且当 k > 1 时,f(k) = 2*f(k-1) + 1。对于 n = 6 的情况,计算过程如下:

f(6) = 2*f(5) + 1

f(5) = 2*f(4) + 1

f(4) = 2*f(3) + 1

f(3) = 2*f(2) + 1

f(2) = 2*f(1) + 1

已知 f(1) = 3

反向代入已知值得到:

f(2) = 2*3 + 1 = 7

f(3) = 2*7 + 1 = 15

f(4) = 2*15 + 1 = 31

f(5) = 2*31 + 1 = 63

f(6) = 2*63 + 1 = 127

所以,修正并执行代码后,输出的结果是 127,故答案为A。


二、编程题

【参考程序】

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	cout<<(n-n/10);
    return 0;
}

【参考程序】

#include <bits/stdc++.h>
using namespace std;
bool is_T(int n){
	int t=n,s=0;
	for(int i=1;i<=4;i++){
		s+=pow(t%10,4);
		t/=10;
	}
	if(s==n) return true;
	else return false;	
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=n;i<=m;i++)
			if (is_T(i)) cout<<i<<" ";
    return 0;
}

【参考程序】

#include <bits/stdc++.h>
using namespace std;
 
// 声明常量及变量
const int N = 1e7 + 5;  // N表示可能的质数的上限
int primes[N], p;   // primes数组保存已知的质数列表,p表示质数个数
bool sign[N];       // sign数组用来标记某个数是否是质数
int s[N];           // s数组用来记录每个数的最大质因子个数
 
// 埃氏筛法初始化质数表
void init_Primes(int n) {
    for (int i = 2; i <= n; i++) {
        if (!sign[i]) primes[p++] = i;      // i是质数,加入质数表中
        for (int j = 0; primes[j] <= n / i; j++) {
            sign[primes[j] * i] = true;     // 将i和质数表中所有不大于n/i的数的积标记为合数
            if (i % primes[j] == 0) break;  // 如果primes[j]是i的因子,则退出循环
        }
    }
}
 
// 计算数n的最大质因子个数
int tj_(int n) {
    int tj = 0;     // tj表示n的最大质因子个数
    for (int i = 0; i < p; i++) {   // 枚举质数表中所有质数
        while (n % primes[i] == 0) {    // 如果当前质数是n的因子
            tj++;           // 更新最大质因子个数
            n /= primes[i]; // 去掉该质因子
            if (n == 1) return tj;  // 如果n变为了1,则说明所有质因子均被枚举完毕
        }
    }
}
 
int main() {
    int n, m;
    cin >> n >> m;
    init_Primes(m);     // 初始化质数表
    int res = 0;        // res表示区间内最大质因子个数
    for (int i = n; i <= m; i++) {  // 枚举每个数,计算其最大质因子个数,更新res
        res = max(res, tj_(i));
    }
    cout << res;    // 输出结果
    return 0;
}

 

【参考程序】

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
 
const int N=1e6+5;
long long n,a[N];
 
int main()
{	
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
 
    long long ans=0,min_n=0;  // ans 记录最大的面积,min_n 记录当前区间中的最小值
	for(int i=1;i<=n;i++){
		min_n=N;
		for(int j=i;j<=n;j++){
			min_n=min(min_n,a[j]);   // 更新当前区间中的最小值
			ans=max(ans,(j-i+1)*min_n);  // 根据更新后的最小值来计算当前区间的面积,并记录最大值
		}
	}
	cout<<ans;  // 输出最大面积
	return 0;
}

【参考程序1】

#include <bits/stdc++.h>    
using namespace std;     
int n,ans; 
map<int,int> mp; // 定义map容器mp用于计数,map容器会根据键自动进行排序
int main() 
{  
	cin>>n;                 // 数的个数
	for(int i=1,x;i<=n;i++){ 
		cin>>x;mp[x]++; // 如果x已经存在,则val+1;否则新建一个键值对(x,1)
	}
	// 当mp中至少存在三个不同的数字时
	while(mp.size()>2){    
		if(ans%2==0){             // 如果ans为偶数
			auto t=mp.begin();       // 获取mp中第一个键值对的迭代器
			(t->second)--;      // 将出现次数最少的数x减去1
			(next(t)->second)++;        // 将出现次数比x大的数y加上1
			if(!t->second) mp.erase(t); // 如果x的出现次数为0,则从mp中删除该键值对
		}else{                  // 如果ans为奇数
			auto t=prev(mp.end());   // 获取mp中最后一个键值对的迭代器
			(t->second)--;      // 将出现次数最多的数x减去1
			(prev(t)->second)++;    // 将出现次数比x小的数y加上1
			if(!t->second) mp.erase(t); // 如果x的出现次数为0,则从mp中删除该键值对
		}
		ans++;
	}
	int max_num = prev(mp.end())->first;
	int min_num = mp.begin()->first;
	cout<<ans<<" "<<min_num<<" "<<max_num<<endl;
	return 0;   
}

【参考程序2】

#include<bits/stdc++.h>
using namespace std;
const int N = 500005;
int n, pail[N],cnt;
list<int> ls;
int main(){
    scanf("%d", &n);
    for(int i = 1,x; i <= n; ++i) {
        cin>>x;pail[x]++;
    }
    for(int i=N-1;i>=1;i--)
    	if(pail[i]) ls.push_back(i);
    while(ls.size()>2){
		auto it_f=ls.begin();
		auto it_s=ls.begin();it_s++;
		int id_f=*it_f,id_s=*it_s;
		pail[id_f]--;
		if(!pail[id_f])ls.pop_front();
		pail[id_s]++;
		cnt++;
		if(ls.size()<=2) break;
		
		it_f=ls.end();it_f--;it_f--;
		it_s=ls.end();it_s--;
		id_f=*it_f,id_s=*it_s;
		pail[id_s]--;
		if(!pail[id_s])ls.pop_back();
		pail[id_f]++;
		cnt++;
	}
	auto it_f=ls.begin();
	auto it_s=ls.begin();it_s++;
	if(ls.size()==1) cout<<cnt<<" "<<*it_f<<" "<<*it_f;
	else cout<<cnt<<" "<<*it_s<<" "<<*it_f;
    return 0;
}

【参考程序】

//树图+深搜+动规
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, root;//n储存所有部门的数量  root储存根节点
int a[N];// a数组表示每个节点的权值
int f[N][2]; // f[i][0/1]表示不选/选i节点时的最大价值
vector<int> G[N]; // 存储树的图结构
void dfs(int u){
	f[u][1] = a[u]; // 初始化选u节点的最大价值为它本身的权值
	for (int v : G[u]){//相当于for(int v=0;v<G[u].size();v++)
		dfs(v); // 遍历v节点
		f[u][1] += f[v][0]; // 如果选择了u节点,则不能选择v节点,所以累加 f[v][0]
		f[u][0] += max(f[v][0],f[v][1]); // 如果不选择u节点,则可以选择v节点
		                                 // 所以取 f[v][0] 和 f[v][1] 的较大值累加起来
	}
}
int main()
{
	cin >> n;
	for (int i = 1, f, s; i <= n; i++){
		cin >> f >> s >> a[s]; // 输入父节点、子节点和子节点权值
		if (f) G[f].push_back(s); // 如果有父亲节点则建立G[f] -> [s]的边
		else root = s; // 否则当前节点为根节点
	}
	dfs(root);
	cout << max(f[root][0],f[root][1]);
	return 0;
}

标签:std,真题,--,++,蓝桥,int,mp,include,节点
From: https://blog.csdn.net/qq_44814724/article/details/139489305

相关文章

  • 海外短剧新体验:多平台适用,语言无障碍
    前言在数字化时代的浪潮下,海外短剧作为一种新兴的视听媒介,正逐渐走进我们的生活。这些由国外制作团队精心打造的短片或微电影,不仅内容丰富多彩,更在跨文化传播中展现出独特的魅力。一、海外短剧系统有什么亮点?海外短剧的魅力,首先体现在其多平台适用性上。无论是电脑、......
  • 霸王餐系统:解决新店销量,老店单量增长的秘诀
    前言在如今的外卖市场中,新店如何快速突破基础销量,老店又怎样持续增加单量,一直是商家们关注的焦点。霸王餐系统,便是一个行之有效的解决方案,它不仅以独特的业务模式吸引了消费者,更助力商家实现了销量的跃升。一、霸王餐系统是什么?霸王餐并非全免费用餐,而是消费者以5-10元......
  • 10_1、C++继承与派生:声明与继承关系
    声明与继承关系继承派生概念派生类声明派生类从基类继承的过程吸收基类成员修改基类成员添加新成员继承关系公有继承保护继承私有继承继承派生概念类的继承就是新类由已经存在的类获得已有特性。类的派生则是由已经存在的类产生新类的过程。由已有类产生新类时,新......
  • 6.C语言scanf及其他输入知识点
    C语言scanf相关用法及其他输入1—scanf输入的用法2—scanf注意的问题3—其他输入1—scanf输入的用法程序#include"stdio.h"intmain(){ intdata; intdata2; intdata3; printf("输入一个整数:\n"); scanf("%d",&data); printf("输入完毕\n"); printf(......
  • CIVIC数据库详细梳理
    作者,EvilGenius特检和肿瘤早筛真的是不能马虎一点。civic官网,https://civicdb.org/welcome。CIViC是一个community-editedforum,用于讨论和解释与癌症variants(或生物标志物改变)临床相关性相关的同行评审出版物。这些解释可能包括分子改变(或缺少clinicalsignificanc......
  • 香港优才计划线上申请10大步骤,2024年流程截图,diy照做就可以
    我是糖爸,已获批香港优才。10个步骤申请香港优才真的很简单,因为现在入境处只接受线上申请啦,你自己上传资料就可以,找中介也是你自己准备资料给他帮忙上传,何不自己动手上传呢,省个几万。10大步骤分别是:选择计分制度、确认基本资格、学历/专业资格、工作经验、人才清单、事业或学业......
  • CH32系列MCU SysTick使用与计算
    1、关于SysTickCH32F103/203:CH32F103/203为Cortex-M3内核,SysTick是一个24位的向下递减计数器,计数器每计数一次的时间可配置为1/时基。当SysTick重装载数寄存器的值递减到0的时候,产生一次中断。CH32F系列MCUSysTick由4个寄存器控制,具体如下图。具体介绍可参考《CM3权威指南》......
  • 全球利物流:助力您的国际货运,分享行业干货
    全球利物流作为一家专业的国际物流公司,致力于为客户提供高效、安全、经济的国际货运服务在这个瞬息万变的全球化市场中,我们以专业的态度和丰富的经验,为客户的物流需求提供一站式解决方案。今天,我们不仅想介绍全球利物流的优势,更希望分享一些国际物流行业的干货,帮助客户更好地理......
  • 在线安装 qt 下载安装慢以及安装报错无法下载存档 not found——解决方式
    一、下载安装QT的在线下载器可以在QT官网下载开源的安装包(需要登陆)或者在各大大学的镜像站中下,比如:mirrors.nju.edu.cn(可选)解压出下载的压缩包,拿到qt-unified-windows-x64-online.exe/dmg/run本体在终端中,输入./包名--mirrorhttps://mirror.nju.edu.cn/qt后......
  • LED大屏调试 异形灯板P1.53_208x104-52s
    模组信息:P1.53_INC2065+INC2018_208x104-52s智能设置:一.112*52区域1.选定芯片-译码-分辨率-芯片数72.3.4.5.6.7.查看灯板--保存灯板二.96*52区域选定芯片-译码-分辨率-芯片数6重复以上步骤,保存灯板三.构造箱体......