9月-10月蓝桥杯学习记录

最近忙着实验室招新以及马上到来的蓝桥杯,到今天老师提醒才想起来要交学习笔记,现在更新一下2019年蓝桥的学习笔记。

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

在这里插入图片描述

思路
第一题,我们可以通过看题目笔算出来

答案:490

二、年号字串 小明用字母A 对应数字1,B 对应2,以此类推,用Z 对应26。对于27以上的数字,小明用两位或更长位的字符串来对应,例如AA 对应27,AB 对应28,AZ 对应52,LQ 对应329。 请问2019 对应的字符串是什么?

思路
第二题,我是直接让2019对26取余数得到最后一个字母
2019%26=17------------对应Q
让2019对26取整 2019/26=77
我们知道z是一个26;zz是26个26;azz是52个26;bzz是78个26;52<77<78
那么我们知道这个数一定是三位的,我们直接让77对26取余得到第二位上的字母
77%26=17------------对应Y
让77对26取整 77/26=2
我们可以得到第一位上的字母
77/26=2------------对应B
所以是BYQ

答案:BYQ

三、数列求值 给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。求 第20190324 项的最后4 位数字。

思路
第三道题,感觉很像斐波那契,自己笔算肯定很费力,所以来跑段代码吧
主要使用到的公式就是(a[i]+a[i+1]+a[i+2])%10000;
算出来答案是4659

4659
四、数的分解

把2019 分解成3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法? 注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和 1001+1000+18 被视为同一种。

思路
第四道题,也是需要用代码来写;我们定义这三个数分别为i,j,k
说来惭愧,这道题我想到了用两重循环来确定i,j,k得值,也想到i,j得值都应该小于2019/3=673.也想到了用while循环来判断一个数中是否有2,4.
但是卡克的地方是我没想到i<j<k的关系,
其实仔细想想,如果i=5了,j一定要从6开始取值,因为1,2,3一定已经被i取过了,而且只要i,j得值小于2019/3=673,那么k得值一定比他们两个大三个数的值一定不会相同
下面来看一下代码

#include
#include
using namespace std;
bool yes(int x) {
while(x!=0)
{
if (x % 10 == 2 || x % 10 == 4) return false;
x/=10;
}
return true;
}
int main() {
int N = 2019;
int sum = 0;
for (int i = 1; i < N / 3; ++i)
{
if (yes(i))
{
for (int j = i + 1; N - i - j > j; ++j)
{
if (yes(j) && yes(N - i - j))
sum++;
}

    }

}
printf("%d",sum);
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
答案:40785

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

010000
000100
001001
110000

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

01010101001011001001010110010110100100001000101010
00001000100000101010010000100000001001100110100101
01111011010010001000001101001011100011000000010000
01000000001010100011010000101000001010101011001011
00011111000000101000010010100010100000101100000000
11001000110101000010101100011010011010101011110111
00011011010101001001001010000001000101001110000000
10100000101000100110101010111110011000010000111010
00111000001010100001100010000001000101001100001001
11000110100001110010001001010101010101010001101000
00010000100100000101001010101110100010101010000101
11100100101001001000010000010101010100100100010100
00000010000000101011001111010001100000101010100011
10101010011100001000011000010110011110110100001000
10101010100001101010100101000010100000111011101001
10000000101100010000101100101101001011100000000100
10101001000000010100100001000100000100011110101001
00101001010101101001010100011010101101110000110101
11001010000100001100000010100101000001000111000010
00001000110000110101101000000100101001001000011101
10100101000101000000001110110010110101101010100001
00101000010000110101010000100010001001000100010101
10100001000110010001000010101001010101011111010010
00000100101000000110010100101001000001000000000010
11010000001001110111001001000011101001011011101000
00000110100010001000100000001000011101000000110011
10101000101000100010001111100010101001010000001000
10000010100101001010110000000100101010001011101000
00111100001000010000000110111000000001000000001011
10000001100111010111010001000110111010101101111000

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100, MAXM = 100;
const int f[4] = {
    1, 0, 0, -1 };
const int g[4] = {
    0, -1, 1, 0 };
const char* s = "DLRU";
char a[MAXN][MAXM];
int r[MAXN][MAXM];
typedef pair<int, int> P;
int N, M;
void</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值