【备战蓝桥】 算法·每日一题(详解+多解)-- day1

简介: 【备战蓝桥】 算法·每日一题(详解+多解)-- day1

【备战蓝桥】 算法·每日一题(详解+多解)-- day1


✨博主介绍

什么是蓝桥杯

第一题:

第二题

第三题

第四题

第五题

第六题

第七题

💫点击直接资料领取💫


✨博主介绍

🌊 作者主页:苏州程序大白


🌊 作者简介:🏆CSDN人工智能域优质创作者🥇,苏州市凯捷智能科技有限公司创始之一,目前合作公司富士康、歌尔等几家新能源公司


💬如果文章对你有帮助,欢迎关注、点赞、收藏


💅 有任何问题欢迎私信,看到会及时回复

💅关注苏州程序大白,分享粉丝福利


什么是蓝桥杯


在这里插入图片描述


蓝桥杯全国软件和信息技术专业人才大赛是由中华人民共和国工业和信息化部人才交流中心主办,国信蓝桥教育科技(北京)股份有限公司承办的计算机类学科竞赛。


蓝桥杯全称蓝桥杯全国软件和信息技术专业人才大塞,是由工业和信息化部人才交流中

心举办的全国性IT学科赛事,是高校教育教学改革和创新人才培养的重要竞赛项目。


随着信息化社会的加快,软件和信息技术逐渐成为我国的核心产业,因此推动软件和信息技术产业的发展,促进软件和信息技术专业技术人才的培养势在必行,蓝桥杯就是这样一个全面推动行业发展及人才培养进程的比赛。


蓝桥杯比赛项目分为个人赛软件类、个人赛电子类、青少年创意编程组、视觉设计大赛这几个部分,目前参赛学校已经超过1200多所,包括清华大学、上海交通大学等名校,取得了良好的社会反响。


第一题:

题目描述


数列求值

给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。

求第20190324 项的最后4 位数字。


#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL N = 5e7;
LL arr[N];
int main() {
  arr[1] = 1, arr[2] = 1, arr[3] = 1;
  for(LL i = 4; i <= 20190324; i++){
    //我们只要后四位有效数字,所以取模10000即可 
    LL t = ((arr[i - 1] % 10000 + arr[i - 2] % 10000) % 10000 + 
    arr[i - 3] % 10000) % 10000;
    arr[i] = t;
  }
  cout << arr[20190324] << endl;
  return 0;
}


答案:

4659


第二题


题目描述:


完全二叉树的权值


给定一棵包含N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是A1, A2, AN,如下图所示:


现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。

注:根的深度是1。


#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
  LL res = 0, n, k = 0, s = 0, ss = -5e10, m = 0;
  cin >> n;
  for(LL i = 1; i <= n; i++){
    int tmp;
    cin >> tmp;
    s += tmp;
    m ++;
    if(m == pow(2, k)){
      if(s > ss) {
        ss = s;
        res = k;
      }
      k ++;
      s = 0;
      m = 0;
    }
  }
    cout << res + 1 << endl;
    return 0;
}


第三题


题目描述:


组队


作为篮球队教练,你需要从以下名单中选出1 号位至5 号位各一名球员,组成球队的首发阵容。

每位球员担任1号位至5号位时的评分如下表所示。请你计算首发阵容1号位至5号位的评分之和最大可能是多少?


1 97 90 0 0 0 2 92 85 96 0 0 3 0 0 0 0 93 4 0 0 0 80 86 5 89 83 97 0 0

6 82 86 0 0 0 7 0 0 0 87 90 8 0 97 96 0 0 9 0 0 89 0 0 10 95 99 0 0 0

11 0 0 96 97 0 12 0 0 0 93 98 13 94 91 0 0 0 14 0 83 87 0 0 15 0 0 98

97 98 16 0 0 0 93 86 17 98 83 99 98 81 18 93 87 92 96 98 19 0 0 0 89

92 20 0 99 96 95 81


1 97 90 0 0 0 2 92 85 96 0 0 3 0 0 0 0 93 4 0 0 0 80 86 5 89 83 97 0 0

6 82 86 0 0 0 7 0 0 0 87 90 8 0 97 96 0 0 9 0 0 89 0 0 10 95 99 0 0 0

11 0 0 96 97 0 12 0 0 0 93 98 13 94 91 0 0 0 14 0 83 87 0 0 15 0 0 98

97 98 16 0 0 0 93 86 17 98 83 99 98 81 18 93 87 92 96 98 19 0 0 0 89

92 20 0 99 96 95 81


题解:


#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
  cout << 98 + 99 + 98 + 97 + 98 << endl;
    return 0;
}


第四题


题目描述:


年号字串


小明用字母A 对应数字1,B 对应2,以此类推,用Z 对应26。对于27以上的数字 小明用两位或更长位的字符串来对应,例如AA

对应27,AB 对应28,AZ 对应52,LQ 对应329。 请问2019 对应的字符串是什么?


#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
  int n = 2019;
  string s1 = "";
  while(n){
    int t = n % 26;
    s1 += char('A' + t - 1);
    n /= 26;
  }
  reverse(s1.begin(), s1.end());
  cout << s1 << endl;
    return 0;
}


第五题


题目描述:


数的分解


把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?

注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和1001+1000+18 被视为同一种。


#include<bits/stdc++.h>
using namespace std;
bool check(int n){
  while(n){
    int tmp = n % 10;
    if(tmp == 2 || tmp == 4) return false;
    n /= 10;
  }
  return true;
}
int main(){
  int res = 0;
  for(int i = 1; i <= 2019; i++){
    for(int j = i + 1; i + j <= 2019; j++){
      int k = 2019 - i - j;
      if(k > j && check(i) && check(j) && check(k)) res ++;
    }
  }
  cout << res << endl;
    return 0;
}


第六题


题目描述:


特别数的和


小明对数位中含有2、0、1、9 的数字很感兴趣(不包括前导0) 在1到40中这样的数包括1、2、9、10 至32、39 和40,共28

个,他们的和是574。 请问,在1到n 中,所有这样的数的和是多少?


#include<bits/stdc++.h>
using namespace std;
bool check(int n){
  while(n){
    int tmp = n % 10;
    if(tmp == 2 || tmp == 0 || tmp == 1 || tmp == 9)
      return true;
    n /= 10;
  }
  return false;
}
int main(){
  int m, res = 0;
  cin >> m;
  for(int i = 1; i <= m; i++){
    if(check(i)) res += i;
  }
  cout << res << endl;
    return 0;
}


第七题


题目描述:


等差数列


数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N 个整数。 现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差数列有几项?


#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
vector<LL>arr;
int main(){
  LL n;
  cin >> n;
  for(LL i = 0; i < n; i++){
    LL tmp;
    cin >> tmp;
    arr.push_back(tmp);
  }
  sort(arr.begin(), arr.end());
  LL d = 0;
  for(LL i = 0; i < arr.size()-1; i++){
    d = __gcd(d, arr[i+1] - arr[i]);
  }
  if(arr[0] != arr[n-1]){
    cout << (arr[n-1] - arr[0]) / d + 1;
  }else{
    cout << n << endl;
  }
    return 0;
}


相关文章
|
算法
【迎战蓝桥】 算法·每日一题(详解+多解)-- day5
💖1. 数组中出现次数超过一半的数字 💖2. 二进制中1的个数 💖3. 替换空格
【迎战蓝桥】 算法·每日一题(详解+多解)-- day5
|
算法
【迎战蓝桥】 算法·每日一题(详解+多解)-- day3
💖1. 链表中倒数第k个结点 💖2. 反转链表(五种解题思路) 💖3. 合并两个排序的链表
|
算法
【迎战蓝桥】 算法·每日一题(详解+多解)-- day11
💖1. 按之字形顺序打印二叉树 💖2. 二叉搜索树的第k个节点 💖3. 二叉搜索树的第k大节点
|
算法
【迎战蓝桥】 算法·每日一题(详解+多解)-- day2
💖1. 斐波那契数列 💖2. 青蛙跳台阶问题 💖3. 矩形覆盖
|
算法 测试技术
【迎战蓝桥】 算法·每日一题(详解+多解)-- day9
💖1. 两个链表的第一个公共结点 💖2. 二叉树的深度 💖3. 数组中只出现一次的数字
【迎战蓝桥】 算法·每日一题(详解+多解)-- day9
|
算法
【迎战蓝桥】 算法·每日一题(详解+多解)-- day1
【迎战蓝桥】 算法·每日一题(详解+多解)-- day1
【迎战蓝桥】 算法·每日一题(详解+多解)-- day1
|
存储 算法 搜索推荐
【迎战蓝桥】 算法·每日一题(详解+多解)-- day8
💖1. 连续子数组的最大和 💖2. 回文数索引 💖3. 把数组排成最小的数
【迎战蓝桥】 算法·每日一题(详解+多解)-- day8
|
算法
【迎战蓝桥】 算法·每日一题(详解+多解)-- day10
💖1. 和为S的连续正数序列 💖2. 左旋转字符串 💖3. 翻转单词序列
108 0
|
算法
【迎战蓝桥】 算法·每日一题(今日详解)-- day6
💖1. 包含min函数的栈 💖2. 栈的压入、弹出序列 💖3. 从上往下打印二叉树 💖4. 二叉搜索树的后序遍历序列
|
算法
【迎战蓝桥】 算法·每日一题(今日详解)-- day4
💖1. 数的子结构 💖2. 二叉树的镜像 💖3. 删除链表中重复的结点