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. python,获取用户输入,并且将输入的内容写到.txt

    该功能缺点是必须保证该文件不存在的情况才会成功 f=open('E:/mywork/保存文件.txt','x') def userwrite(code): if code=='w': f.close( ...

  2. com.nostra13.universalimageloader 加载displayImage图片时图片模糊的处理办法

    配置显示参数: DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(defaultR ...

  3. JavaScript数组去重—ES6的两种方式

    说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...

  4. HTTP协议07-通用首部字段

    通用首部字段 通用首部字段是指,请求报文和响应报文双方都会使用的首部. 1)Cache-Control 通过指定首部字段Cache-Control的指令,就能操作缓存的工作机制. 指令的参数可以多选, ...

  5. python3+requests库框架设计07-生成测试报告

    使用HTMLTestRunner可以生成测试报告.HTMLTestRunner是unittest模块下的一个拓展,原生的生成报告样式比较丑,GitHub上有大佬优化过后的版本:GitHub地址.下载之 ...

  6. Ridis

    Redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的values类型相对更多,包括字符串.列表.哈希散列表.集合,有序集合. 这些数据类型都支持push/ ...

  7. 【转】浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个 ...

  8. Alpha 冲刺 (7/10)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺7 团队部分 后敬甲(组长) 过去两天完成了哪些任务 界面设计.图标设计 写博客 接下来的计划 准备下周答辩 跟进进 ...

  9. MySQL基本语句、存储引擎

    数据库服务器中存放的是 库(文件加) 表(文件) 表里面是记录(一行数据)quit or  exit 退出客户端\s \c  \G 库(文件)    创建        create database ...

  10. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装安装及简单使用:https://github.com/andymccurdy/r ...