2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组#

试题 A:组队#

本题总分:5分
【问题描述】
作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员,
组成球队的首发阵容。
每位球员担任 1号位至 5号位时的评分如下表所示。请你计算首发阵容 1
号位至5号位的评分之和最大可能是多少?

此题需要注意的是:一个人可能在很多个位分数都是最高的,但是一个人只能打一个位

1: 98 2:99 3: 98 4:97 5:98 == 490(认真理解题真的很重要 ┭┮﹏┭┮)

试题 B:年号字串#

本题总分:5分
【问题描述】
小明用字母 A对应数字 1,B对应 2,以此类推,用 Z对应 26。对于 27
以上的数字,小明用两位或更长位的字符串来对应,例如 AA对应27,AB对
应28,AZ对应52,LQ对应329。
请问2019对应的字符串是什么?

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个大写英文字符串,在提交答案时只填写这个字符串,注意全部大写,填写多
余的内容将无法得分

//答案BYQ
#include <bits/stdc++.h>
using namespace std;
void dfs(int N) {
if (N > ) dfs((N - ) / );//其中(N - 1)为将26进制转换为以0开头的,以前是以1开头满27进
putchar('A' + (N - ) % );
}
int main() {
int N;
while (cin >> N) {
dfs(N); cout << endl;
}
return ;
}

试题 C:数列求值#

本题总分:10分
【问题描述】
给定数列1,1,1,3,5,9,17,…,从第4项开始,每项都是前3项的和。求
第20190324项的最后4位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个4位整数(提示:答案的千位不为0),在提交答案时只填写这个整数,填写
多余的内容将无法得分。

 #include <iostream>
using namespace std;
int main(){
int a[] = {, , , };//第四为用来存储所求的值
for(int i = ; i < ; i++){
a[] = (a[] + a[] + a[]) % ;
a[] = a[] % ;
a[] = a[] % ;
a[] = a[];
}
cout << a[] << endl;
return ;
}

答案:4659

试题 D:数的分解#

本题总分:10分
【问题描述】
把 2019分解成 3个各不相同的正整数之和,并且要求每个正整数都不包
含数字2和4,一共有多少种不同的分解方法?
注意交换 3个整数的顺序被视为同一种方法,例如 1000+1001+18和
1001+1000+18被视为同一种。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

 #include <iostream>
#include <string>
#include <sstream>
using namespace std;
bool check(int n){
if(n < ){
return false;
}
string s1;
stringstream ss;
ss << n;
ss >> s1;
for(int i = ; i < s1.size(); i++){
if(s1[i] == '' || s1[i] == ''){
return false;
}
}
return true;
}
int main(){
int count = ;
for(int i = ; i < ; i++){
if(check(i)){
for(int j = i + ; j < - i - j; j++){
if(check(j) && check( - i - j)){
count++;
}
}
}
}
cout << count;
return ;
}

答案 : 40785

五、 迷宫

下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可以通行的地方。


迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这个它的上、下、左、右四个方向之一。
对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,一共10 步。其中D、U、L、R 分别表示向下、向上、向左、向右走。对于下面这个更复杂的迷宫(30 行50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。请注意在字典序中D<L<R<U。


答案:

DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR

 #include <iostream>
#include <map>
#include <vector>
#include <deque>
using namespace std;
char a[][];
struct node{
int x;
int y;
int stepNum; //用来记录步数
int l[]; //用来记录路径
};
deque<node> q;
void printRoad(node n){
int direction[][] = {, , , -, , , -, }; // D < L < R < U
int backTx = direction[n.l[]][];
int backTy = direction[n.l[]][];
for(int i = ; i < n.stepNum; i++){
int tx = direction[n.l[i]][];
int ty = direction[n.l[i]][];
//int direction[4][2] = {1, 0, 0, -1, 0, 1, -1, 0}; // D < L < R < U
if(tx == && ty == ){
cout << "D";
}else if(tx == && ty == -){
cout << "L";
}else if(tx == && ty == ){
cout << "R";
}else if(tx == - && ty == ){
cout << "U";
}
backTx = tx;
backTy = ty;
}
}
void bfs(){
node nextNode;
node curNode;
curNode.x = ;
curNode.y = ;
curNode.stepNum = ;
curNode.l[curNode.stepNum] = ;
a[curNode.x][curNode.y] = '';
q.push_back(curNode);
while(!q.empty()){
curNode = q.front();
int curX = curNode.x;
int curY = curNode.y;
if(curX == && curY == ){
printRoad(curNode);
return;
}
a[curX][curY] = ''; // 出队前先去除标记
q.pop_front();
int direction[][] = {, , , -, , , -, }; // D < L < R < U
for(int i = ; i < ; i++){
int tx = curX + direction[i][];
int ty = curY + direction[i][];
if(tx < || tx > || ty < || ty > ){
continue;
}
if(a[tx][ty] == ''){
nextNode = curNode;
a[tx][ty] = '';
nextNode.x = tx;
nextNode.y = ty;
nextNode.stepNum = curNode.stepNum + ;
nextNode.l[curNode.stepNum] = i;
q.push_back(nextNode);
} }
}
}
int main(){
for(int i = ; i < ; i++){
for(int j = ; j < ; j++){
cin >> a[i][j];
}
} bfs();
return ;
}

 #include <iostream>
#include <sstream>
#include <string>
using namespace std;
bool check(int n){
stringstream ss;
string s1;
ss << n;
ss >> s1;
if(string::npos != s1.find('')){
return true;
}else if(string ::npos != s1.find('')){
return true;
}else if(string::npos != s1.find('')){
return true;
}else if(string::npos != s1.find('')){
return true;
}else{
return false;
} }
int main(){
int n;
cin >> n;
int sum = ;
for(int i = ; i < n + ; i++){
if(check(i)){
sum += i;
}
}
cout << sum;
return ;
}

【输出格式】
输出一个整数代表答案。

【样例输入】
7
1 6 5 4 3 2 1

【样例输出】
2
【评测用例规模与约定】
对于所有评测用例,1≤N≤100000 1 \leq N \leq 1000001≤N≤100000,−100000≤Ai≤100000 -100000 \leq Ai \leq 100000−100000≤Ai≤100000。

思路:
枚举。时间复杂度: O(N) O(N)O(N)

注意: 最大和可能为负数

数据1:

- - -

答案1:

 

数据2:

 - - -

答案2:


八、等差数列
数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N 个整数。
现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差数列有几项?
【输入格式】
输入的第一行包含一个整数N。
第二行包含N 个整数A1,A2,...,AN A_{1}, A_{2}, ..., A_{N}A
1

,A
2

,...,A
N

。(注意A1 A_{1}A
1

~ AN A_{N}A
N

并不一定是按等差数列中的顺序给出)

【输出格式】
输出一个整数表示答案。

【样例输入】
5
2 6 4 10 20

【样例输出】
10

【样例说明】
包含2、6、4、10、20 的最短的等差数列是2、4、6、8、10、12、14、16、18、20。

【评测用例规模与约定】
对于所有评测用例,2≤N≤100000 2 \leq N \leq 1000002≤N≤100000,0≤Ai≤109 0 \leq Ai \leq 10^90≤Ai≤10
9

思路:
排序+遍历求两数之差的gcd。时间复杂度: O(NlogN) O(NlogN)O(NlogN)

注意: d=0为常数数列, 答案为N

九、后缀表达式
相似题 (N=0, 感觉表达式这题应该是改编的): Slime
给定N 个加号、M 个减号以及N + M + 1 个整数A1,A2,...,AM+N+1 A_{1}, A_{2}, ..., A_{M + N + 1}A
1

,A
2

,...,A
M+N+1

,小明想知道在所有由这 N 个加号、M 个减号以及 N + M +1 个整数凑出的合法的后缀表达式中,结果最大的是哪一个?
请你输出这个最大的结果。
例如使用1 2 3 + -,则“2 3 + 1 -” 这个后缀表达式结果是4,是最大的。

【输入格式】
第一行包含两个整数N 和M。
第二行包含N + M + 1 个整数A1,A2,...,AM+N+1 A_{1}, A_{2}, ..., A_{M + N + 1}A
1

,A
2

,...,A
M+N+1

【输出格式】
输出一个整数,代表答案。

【样例输入】
1 1
1 2 3
【样例输出】
4

【评测用例规模与约定】
对于所有评测用例,1≤N,M≤100000 1 \leq N, M \leq 1000001≤N,M≤100000,−109≤Ai≤109 -10^9 \leq A_{i} \leq 10^9−10
9
≤A
i

≤10
9

蓝桥杯第十届真题B组(2019年)的更多相关文章

  1. 平方十位数(蓝桥杯第八届国赛真题 JAVA-B组)

    思路:从大到小枚举,判断其平方是否不重复 答案:9814072356 //水题 标题:平方十位数 由0~9这10个数字不重复.不遗漏,可以组成很多10位数字. 这其中也有很多恰好是平方数(是某个数的平 ...

  2. 算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)

    目录 1 愤怒小鸟 2 反幻方 3 打靶 4 路径之谜 5 碱基 6 圆圈舞 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 愤怒小鸟 愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车 ...

  3. 算法笔记_199:第二届蓝桥杯软件类决赛真题(C语言本科)

    前言:以下代码部分仅供参考,C语言解答部分全部来自网友,Java语言部分部分参考自网友,对于答案的正确性不能完全保证. 试题1 数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示. ...

  4. 算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)

    目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里. ...

  5. 算法笔记_206:第五届蓝桥杯软件类决赛真题(Java语言A组)

    目录 1 海盗分金币 2 六角幻方 3 格子放鸡蛋 4 排列序数 5 幂一矩阵 6 供水设施    前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 海盗分金币 有5个海盗,相约进行一次帆船比赛. 比 ...

  6. 算法笔记_210:第六届蓝桥杯软件类决赛真题(Java语言C组)

    目录 1 机器人数目 2 生成回文数 3 空心菱形 4 奇怪的数列 5 密文搜索 6 居民集会 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 机器人数目 标题:机器人数目 少年宫新近邮购了小机器人 ...

  7. 算法笔记_203:第四届蓝桥杯软件类决赛真题(C语言B组)

    目录 1 猜灯谜 2 连续奇数和 3 空白格式化 4 高僧斗法 5 格子刷油漆 6 农场阳光   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 猜灯谜 标题:猜灯谜 A 村的元宵节灯会上有一迷题: ...

  8. 算法笔记_201:第三届蓝桥杯软件类决赛真题(Java本科)

    目录 1 数量周期 2 提取子串 3 源码变换 4 古代赌局 5 火柴游戏   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 数量周期 [结果填空](满分9分) 复杂现象背后的推动力,可能是极其简 ...

  9. 算法笔记_205:第五届蓝桥杯软件类决赛真题(C语言B组)

    目录 1 年龄巧合 2 出栈次序 3 信号匹配 4 生物芯片 5 Log大侠 6 殖民地   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 年龄巧合 小明和他的表弟一起去看电影,有人问他们的年龄. ...

随机推荐

  1. windows下flazr对rtmp视频流进行压力测试(批量直播测试)

    flazr-0.7-RC2下载地址:百度网盘 提取码:nu05 简述:通过推流软件推送摄像头视频流到nginx流媒体服务器,获取nginx流媒体服务器上的视频流,在windows下使用flazr软件进 ...

  2. Java strictfp有什么作用

  3. springboot中使用过滤器、拦截器、监听器

    监听器:listener是servlet规范中定义的一种特殊类.用于监听servletContext.HttpSession和servletRequest等域对象的创建和销毁事件.监听域对象的属性发生 ...

  4. Linux7系列阅读

    1.[Centos7]hostnamectl 设置主机名 https://blog.csdn.net/dream361/article/details/56833248 2.ip addr https ...

  5. 【Nginx】Nginx简介及在CentOS7.0下安装教程

    是什么 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能 ...

  6. cocos开发学习记录

    场景的创建和切换 https://blog.csdn.net/lin453701006/article/details/56334578

  7. ifconfig相关参数及用法说明

    一.ifconfig ifconfig 主要是可以手动启动.观察与修改网络接口的相关参数,可以修改的参数很多,包括 IP 参数以及 MTU 等都可以修改,它的语法如下: [root@linux ~]# ...

  8. Control算法相关

    Control算法相关 添加新的control算法官方指导教程. 创建一个控制器: 在文件control_config中添加新控制器的配置信息: 注册新控制器. 如何添加新的CAN卡. Apollo中 ...

  9. iperf3 不支持双工模式

    iperf 2.05的时候,客户端可以使用参数"-d"来进行双工测试,先测试发送,client向server发送数据,等到测试时间结束后(默认为10s,可以通过-t选项来更改),然 ...

  10. linux 提高代码质量的工具

    很多IT公司对于软件开发都有严格的分工,这包括设计.测试.服务支持等等.但是,我一直都认为只有开发者才是真正对软件质量负责的人.没有好的软件设计,软件质量基本上是无从谈起.当然,要做到这一点是需要额外 ...