建站科技公司,关键词排名哪里查,茂名公司网站开发,电商网站建设行情C蓝桥杯比赛历年真题–第14届蓝桥杯省赛真题
一、选择题 答案#xff1a;A
解析#xff1a; C中 bool 类型与 char 类型一样#xff0c;都需要1 byte。一些其他类型的占用字节数:short:2 byte#xff0c;int:4byte#xff0c;long long:8 byte#xff0c;double:8byte蓝桥杯比赛历年真题–第14届蓝桥杯省赛真题
一、选择题 答案A
解析 C中 bool 类型与 char 类型一样都需要1 byte。一些其他类型的占用字节数:short:2 byteint:4bytelong long:8 bytedouble:8byte故答案为A。 答案C
解析
A中结构体中可以定义成员变量也可以定义只有该结构体类型变量可调用的成员函数
B中所谓结构体的继承特性指的是在一个已经定义好的旧结构体的基础上创建一个新结构体并且新结构体可以复用旧结构体的成员和函数
C正确D中构造函数可以在创建结构体变量时按照函数预设的构造规则将对应成员变量赋值并执行其他操作。构造函数在创建结构体类型的对象时自动执行因此无法由用户主动调用也没有返回值故答案为C。 答案C
解析由等比数列的求和可知:一个高度为 h的满二叉树含有 2h-1 个结点。
本题的 62 个结点相当于高度为6 的满二叉树的 2^6 -163个结点中再去掉最底层最右端的一个结点故答案为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;cinn;cout(n-n/10);return 0;
}【参考程序】
#include bits/stdc.h
using namespace std;
bool is_T(int n){int tn,s0;for(int i1;i4;i){spow(t%10,4);t/10;}if(sn) return true;else return false;
}
int main()
{int n,m;cinnm;for(int in;im;i)if (is_T(i)) couti ;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) { // 枚举每个数计算其最大质因子个数更新resres max(res, tj_(i));}cout res; // 输出结果return 0;
}【参考程序】
#include iostream
#include cstdio
#include algorithm
using namespace std;const int N1e65;
long long n,a[N];int main()
{ cinn;for(int i1;in;i) cina[i];long long ans0,min_n0; // ans 记录最大的面积min_n 记录当前区间中的最小值for(int i1;in;i){min_nN;for(int ji;jn;j){min_nmin(min_n,a[j]); // 更新当前区间中的最小值ansmax(ans,(j-i1)*min_n); // 根据更新后的最小值来计算当前区间的面积并记录最大值}}coutans; // 输出最大面积return 0;
}【参考程序1】
#include bits/stdc.h
using namespace std;
int n,ans;
mapint,int mp; // 定义map容器mp用于计数,map容器会根据键自动进行排序
int main()
{ cinn; // 数的个数for(int i1,x;in;i){ cinx;mp[x]; // 如果x已经存在则val1否则新建一个键值对(x,1)}// 当mp中至少存在三个不同的数字时while(mp.size()2){ if(ans%20){ // 如果ans为偶数auto tmp.begin(); // 获取mp中第一个键值对的迭代器(t-second)--; // 将出现次数最少的数x减去1(next(t)-second); // 将出现次数比x大的数y加上1if(!t-second) mp.erase(t); // 如果x的出现次数为0则从mp中删除该键值对}else{ // 如果ans为奇数auto tprev(mp.end()); // 获取mp中最后一个键值对的迭代器(t-second)--; // 将出现次数最多的数x减去1(prev(t)-second); // 将出现次数比x小的数y加上1if(!t-second) mp.erase(t); // 如果x的出现次数为0则从mp中删除该键值对}ans;}int max_num prev(mp.end())-first;int min_num mp.begin()-first;coutans min_num max_numendl;return 0;
}【参考程序2】
#includebits/stdc.h
using namespace std;
const int N 500005;
int n, pail[N],cnt;
listint ls;
int main(){scanf(%d, n);for(int i 1,x; i n; i) {cinx;pail[x];}for(int iN-1;i1;i--)if(pail[i]) ls.push_back(i);while(ls.size()2){auto it_fls.begin();auto it_sls.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_fls.end();it_f--;it_f--;it_sls.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_fls.begin();auto it_sls.begin();it_s;if(ls.size()1) coutcnt *it_f *it_f;else coutcnt *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节点时的最大价值
vectorint G[N]; // 存储树的图结构
void dfs(int u){f[u][1] a[u]; // 初始化选u节点的最大价值为它本身的权值for (int v : G[u]){//相当于for(int v0;vG[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;
}