【备战蓝桥】 算法·每日一题(详解+多解)-- 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;
}


相关文章
|
存储 监控 安全
Elasticsearch 8.X 集群 SSL 证书到期了,怎么更换?
Elasticsearch 8.X 集群 SSL 证书到期了,怎么更换?
|
缓存 开发框架 算法
.NET操作Excel高效低内存的开源框架 - MiniExcel
.NET操作Excel高效低内存的开源框架 - MiniExcel
347 0
.NET操作Excel高效低内存的开源框架 - MiniExcel
|
C#
C# 当前上下文中不存在InitializeComponent()
C#——当前上下文中不存在InitializeComponent()可能原因是:项目文件直接由外部加载进来时可能出现错误。可以先检查xaml文件的开头x:Class=“day27test02.MainWindow”是否是正确的类名。如果不是,改成对应的项目的类即可。这是本人碰到的这种情况通过这种方式得到解决的,仅供参考。
952 1
C# 当前上下文中不存在InitializeComponent()
|
存储 物联网 Serverless
函数计算产品使用问题之如何解决函数计算FC的ControlNet不生效
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
126 0
|
网络协议 安全 网络性能优化
CCNA 200-301系列:TCP头
【4月更文挑战第21天】
171 9
|
Linux 网络安全 数据安全/隐私保护
|
物联网
【ESP8266-NodeMCU软硬串口通讯】
【ESP8266-NodeMCU软硬串口通讯】
723 0
|
小程序
小程序扫描二维码,正则校验
小程序扫描二维码,正则校验
175 0
|
Web App开发 Java 测试技术
反了!居然让我教她自动化测试!
一个做测试的居然让我教她怎么做自动化测试,真是反了……行吧,正好懂一些 Selenium,今天就来跟大家一起了解下 Python 如何使用 Selenium 进行自动化测试。
140 0
|
存储 NoSQL 测试技术
Redis为什么这么快?Redis的线程模型与Redis多线程
Redis为什么这么快?Redis的线程模型与Redis多线程

热门文章

最新文章