草庐IT

蓝桥杯刷题冲刺 | 倒计时26天

指针不指南吗 2023-06-05 原文

作者:指针不指南吗
专栏:蓝桥杯倒计时冲刺

🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾

文章目录

1.路径

  • 题目

    链接: 路径 - 蓝桥云课 (lanqiao.cn)

    本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

    小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。

    小蓝的图由 2021 个结点组成,依次编号 1 至 2021。

    对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。

    例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。

    请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

    提示:建议使用计算机编程解决问题。

  • 第一次

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=2030;
    
    int g[N][N];
    
    int gcd(int a,int b)
    {
    	return b?gcd(b,a%b):a;
    }
    
    int gcs(int a,int b)
    {
    	return a*b/gcd(a,b);
    }
    
    int main()
    {
    	for(int i=1;i<2019;i++)
    		for(int j=i+1;j<=2019;j++)
    		{
    			if(j-i>21) g[i][j]=-1;
    			else g[i][j]=gcs(i,j);
    		}
    	
    	// 只会一个存储,emmm ,这个周末补上 图论 算法
    	
    	return 0;
    }
    
  • 正确题解

    
    #include<iostream>
    #include<cstring>       //memset()原型 
    using namespace std;
    const int N=3000;     
    const int INF=0x3f;    //这里可以理解为无穷大  
    int  graph[N][N];     //邻接矩阵存储图 
    int  dist[N]; 		  //记录最短路径值
    bool visited[N];      //判断节点是否访问
     
    int gcd(int a,int b){ //最大公约数 
    	return b==0?a:gcd(b,a%b);
    }
    int lem(int a,int b){ //最小公倍数 
    	return a*b/gcd(a,b);
    }
     
    int dijkstra(int n){
    	//初始化 
    	memset(dist,INF,sizeof(dist));
    	memset(visited,false,sizeof(visited));
    	dist[1]=0;
    	  
    	for(int i=1;i<=n;++i){
    		int k=-1;
    		for(int j=1;j<=n;++j){   //获取距离源点最近点 
    			if(!visited[j]&&(k==-1||dist[j]<dist[k])){
    				k=j;
    			}
    		}
    		visited[k]=true;
    		for(int j=1;j<=n;++j){
    			if(dist[k]+graph[k][j]<dist[j]){
    				dist[j]=dist[k]+graph[k][j]; 
    			}
    		}
    	}
    	if(dist[n]==INF)  return -1;
    	return dist[n]; 
    }
    int main(){
    	int n=2021;  //节点数 
    	//初始化 
    	memset(graph,INF,sizeof(graph));
    	//构图 
    	for(int i=1;i<=n;++i){
    		for(int j=1;j<=n;++j){
    			if(abs(i-j)<=21){
    				graph[i][j]=lem(i,j);
    			}
    		}
    	}
    	//求出最短路径,输出结果 
    	cout<<dijkstra(n)<<endl;
    	return 0;
    }
    
  • 反思

    掌握了 新的方法来求解 最大公约数

    到后面 ,看题解,有点看不懂了,没有学 图论 ,真是走不动路啊

2.特别数的和

  • 题目

    链接: 特别数的和 - 蓝桥云课 (lanqiao.cn)

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

    请问,在 1 到 n 中,所有这样的数的和是多少?

    输入描述

    输入一行包含一个整数n(1≤n 1 0 4 10^4 104)。

    输出描述

    输出一行,包含一个整数,表示满足条件的数的和。

    示例

    输入

    40
    

    输出

    574
    
  • 我的题解

    #include<bits/stdc++.h>
    using namespace std;
    
    int check(int x)
    {
    	int t=x;
    	while(t>0)
    	{
    		int k=t%10;
    		if(k==2||k==0||k==1||k==9)
    			return x;
    		t/=10;
    	}
    	return 0;
    }
    
    int main()
    {
    	int n;
    	cin>>n;
    	
    	int sum=0;
    	for(int i=1;i<=n;i++)
    	{
    		sum+=check(i);
    	}
    	
    	cout<<sum;
    	
    	return 0;
    }
    
  • 反思

    希望在 蓝桥杯 可以遇到 这么简单的题 qwq

3.MP3储存

  • 题目

    本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

    如果一个 MP3 文件占用磁盘的大小是 4MB,小蓝的硬盘还剩下 100GB 的空间,请问他还可以放多少个这样的 MP3 文件?

  • 我的题解

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	cout<<1024*100/4;
    	return 0;
    }
    
  • 知识补充

    1B(Byte 字节)=8bit,
    1KB (Kilobyte 千字节)=1024B,
    1MB (Megabyte 兆字节 简称“兆”)=1024KB,
    1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
    1TB (Trillionbyte 万亿字节 太字节)=1024GB,其中1024=2^10 ( 2 的10次方)

  • 反思

    补充一下很基础的计算机知识,有点陌生了

4.求和

  • 题目

    链接: 求和 - 蓝桥云课 (lanqiao.cn)

    给定 n 个整数 a*1,a2,⋅⋅⋅,*a n ,求它们两两相乘再相加的和,即:

    S=a1⋅a2+a1⋅a3+⋯+a n−2⋅a n−1++ a n−1⋅a n

    输入格式

    输入的第一行包含一个整数 n

    第二行包含 n 个整数 a*1,a2,⋯,*a n

    输出格式

    输出一个整数 S*,表示所求的和。请使用合适的数据类型进行运算。

    样例输入

    4
    1 3 6 9
    

    样例输出

    117
    
  • 第一次

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long LL;
    
    const int N=2*1e6+10;
    
    int a[N];
    
    int main()
    {
    	LL sum=0;
    	
    	int n;
    	scanf("%d",&n);
    	
    	for(int i=0;i<n;i++)
    		scanf("%d",&a[i]);
    	
    	for(int i=0;i<n-1;i++)
    		for(int j=i+1;j<n;j++)
    			sum+=a[i]*a[j];
    	
    	cout<<sum;
    	
    	return 0;
    }
    

    简单暴力,只能过 60%

  • 第二次,优化

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long LL;
    
    const int N=2*1e6+10;
    
    int a[N];
    
    int main()
    {
    	LL sum=0,ans=0;
    	
    	int n;
    	scanf("%d",&n);
    	
    	for(int i=0;i<n;i++)
    	{
    		scanf("%d",&a[i]);
    		sum+=a[i];
    	}
    	
    	for(int i=0;i<n;i++)
    	{
    		sum-=a[i];  //“a[1]*a[2]"到"a[n]*(a[n-1]+a[n-2]+....+a[1])"求和
    		ans+=a[i]*sum;   //在这里优化:运用乘法分配律
    	}
    	
    	cout<<ans;
    	
    	return 0;
    }
    
  • 反思

    学会 连乘的优化

有关蓝桥杯刷题冲刺 | 倒计时26天的更多相关文章

  1. ruby - Ruby 性能中的计时器 - 2

    我正在寻找一个用ruby​​演示计时器的在线示例,并发现了下面的代码。它按预期工作,但这个简单的程序使用30Mo内存(如Windows任务管理器中所示)和太多CPU有意义吗?非常感谢deftime_blockstart_time=Time.nowThread.new{yield}Time.now-start_timeenddefrepeat_every(seconds)whiletruedotime_spent=time_block{yield}#Tohandle-vesleepinteravalsleep(seconds-time_spent)iftime_spent

  2. 蓝桥杯备赛(二) - 2

    目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言:  在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC  已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析  这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy

  3. ruby-on-rails - Ruby on Rails 教程 - 5.26 - Sublime Text "Unable to Save"新文件 "spec/support/utilities.rb" - 2

    我正在使用SublimeText2,同时遵循MichaelHartl的RubyonRails教程。可以在http://ruby.railstutorial.org/book/ruby-on-rails-tutorial找到我所指的教程的具体部分。(ctrl+F“list5.26”)。我能够创建规范/支持文件。但是,在尝试创建spec/support/utilities.rb文件时,我收到消息“无法保存~/rails_projects/sample_app/spec/support/utilities.rb”。有人知道为什么会这样吗?SublimeText论坛上有人似乎遇到了完全相同的问

  4. 【历史上的今天】4 月 26 日:验证码的发明者诞生;切尔诺贝利病毒爆发;诺基亚收购 Withings - 2

    整理|王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。今天是2023年4月26日,在2017年的今天,中国首艘国产001A型航空母舰在大连完成了下水,从开工到下水,历时3年多时间。回首过去,眺望未来,在科技历史上的每个4月26日里,还发生过哪些影响深远的关键事件呢?1938年4月26日:编程校验领域图灵奖得主ManuelBlum出生曼纽尔·布卢姆(ManuelBlum)出生于1938年4月26日,他是委内瑞拉的计算机科学家、卡内基梅隆大学的教授,因对计算复杂度理论做出的贡献,以及在密码学和编程校验上的应用而获1995年图灵奖。布卢姆出生于委内瑞拉的一个犹太家庭,他曾在麻省理工学

  5. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  6. ruby-on-rails - 遵循 DCI 设计时在哪里进行验证? - 2

    我正在按照DCI构建新Rails应用程序的行为,但我对将验证放在哪里有一些疑问。传统上,如果您要使用ActiveRecord模型管理您的数据,验证是在继承自AR的特定类中定义的,并且它们似乎适合作为数据层的一部分。然而,在我看来,只在特定角色下进行某些验证是有意义的,并且只有当对象在该上下文中时才应检查它们,在所有其他情况下都将被忽略。这基本上意味着这些验证应该在特定角色上定义,并且当对象在有意义的上下文中使用时,应该使用这些角色模块扩展对象。您认为将这些验证保留在角色上是个好主意吗?如果是这样,您如何声明它们而不污染与对象相同的类的其他实例?如果我想使用ActiveRecord验证,

  7. 十四届蓝桥青少组模拟赛Python-20221108 - 2

    十四届蓝桥青少组模拟赛Python-20221108T1.二进制位数十进制整数2在十进制中是1位数,在二进制中对应10,是2位数。十进制整数22在十进制中是2位数,在二进制中对应10110,是5位数。请问十进制整数2022在二进制中是几位数?print(len(bin(2022))-2)#运行结果:11T2.晨跑小蓝每周六、周日都晨跑,每月的1、11、21、31日也晨跑。其它时间不晨跑。已知2022年1月1日是周六,请问小蓝整个2022年晨跑多少天?#样例代码1ls=[0,31,28,31,30,31,30,31,31,30,31,30,31]ans=0k=6foriinrange(1,13)

  8. 蓝桥杯 stm32 MCP4017 - 2

    本文代码使用HAL库。文章目录前言一、MCP4017的重要特性二、MCP4017计算RBW阻值三、MCP4017地址四、MCP4017读写函数五、CubeMX创建工程(利用ADC测量MCP4017电压)、对应代码:总结前言一、MCP4017的重要特性蓝桥杯板子上的是MCP4017T-104ELT,如图1。MCP4017是一个可编程电阻,通过写入的数值可以改变电阻的大小。重点在于6引脚(W),5引脚(B&#

  9. [蓝桥杯单片机]学习笔记——串口通信的基本原理与应用 - 2

    目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式  2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器​编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置  3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一

  10. 考勤刷卡 最大和 简单 蓝桥杯省赛 2022 - 2

    问题描述小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在一天中员工刷过一次卡,就认为他到岗了。现在小蓝导出了一天中所有员工的刷卡记录,请将所有到岗员工的员工编号列出。输入格式输入的第一行包含一个正整数n,表示一天中所有员工的刷卡记录的条数。接下来n行,每行包含一条刷卡记录,每条刷卡记录的格式为:HH:MM:SSID其中HH:MM:SS表示刷卡时间,HH为一个0到23之间的两位十进制整数(可能含前导0)表示时,MM为一个0到59之间的两位十进制整数(可能含前导0)表示分,SS为一个0到59之间的

随机推荐