今年的蓝桥杯整体来说难度并不是特别大,但是对于细节的考察确实特别多。逻辑思维也是一个考察点,写的时候一定要小心
一、组队
作为篮球队教练,你需要从以下名单中选出 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<iostream>
#include<cstdio>
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))
{