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

news2024/11/15 12:56:41

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

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

文章目录

  • 1.卡片
  • 2.数字三角形
  • 3.购物单
  • 4.回文日期

1.卡片

  • 题目

    链接: 卡片 - 蓝桥云课 (lanqiao.cn)

小蓝有很多数字卡片,每张卡片上都是数字 00 到 99。

小蓝准备用这些卡片来拼一些数,他想从 11 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 11 拼到多少。

例如,当小蓝有 3030 张卡片,其中 00 到 99 各 33 张,则小蓝可以拼出 11 到 1010,

但是拼 1111 时卡片 11 已经只有一张了,不够拼出 1111。

现在小蓝手里有 00 到 99 的卡片各 20212021 张,共 2021020210 张,请问小蓝可以从 11 拼到多少?

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


  • 我的题解

    #include<bits/stdc++.h>
    using namespace std;
    
    int num[10];
    
    int main()
    {
    	int i=0;
    	
    	while(1)
    	{
    		int a=++i;
    		while(a>0)   //取一个数的每一位的做法
    		{
    			num[a%10]++;
    			a/=10;
    		}
    		
    		for(int j=0;j<10;j++)
    		{
    			if(num[j]>2021)
    			{
    				cout<<i-1;  //重点,i的值是取不到的,所以-1!!!!!
    				return 0;
    			}
    		}
    	}
    	
    	
    	return 0;
    }
    

  • 反思

    第一次提交错误是 3182,即当3182时卡片不够用,所以不应该包括 3182

    正确答案 应该是 3181

    可以拿分的题,没了

    考虑边界条件,是否可以取到,是否需要多取一个


2.数字三角形

  • 题目

    链接:数字三角形 - 蓝桥云课 (lanqiao.cn)

图片描述

上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。

路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。

输入描述

输入的第一行包含一个整数N (1≤N≤100),表示三角形的行数。

下面的 N 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。

输出描述

输出一个整数,表示答案。

示例

输入

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

输出

27

  • 我的题解

    • 第一次
    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=100;
    
    int d[N][N];
    
    int main()
    {
    	int n;
    	cin>>n;
    	
    	for(int i=0;i<n;i++)
    		for(int j=0;j<=i;j++)
    			cin>>d[i][j];
    			
    	for(int i=n-2;i>=0;i--)
    		for(int j=0;j<=i;j++)
    			d[i][j]+=max(d[i+1][j],d[i+1][j+1]);
    	
    	cout<<d[0][0];
    	
    	return 0;
    }
    

    我觉得我的做法没有问题,而且手算出来答案也是 30,但是样例是 27

    悟了,原因:向左下走的次数与向右下走的次数相差不能超过 1,没有注意这句话

    找到左边界,找到右边界,即连续向左走两步,就只能拐弯

    在这里插入图片描述

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=100;
    
    int d[N][N];
    
    int main()
    {
    	int n;
    	cin>>n;
    	
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=i;j++)
    			cin>>d[i][j];
    			
    	for(int i=2;i<=n;i++)   //从上往下开始找,路径的权值最大的
    		for(int j=1;j<=i;j++)
    			d[i][j]+=max(d[i-1][j],d[i-1][j-1]);
    	
    	cout<<max(d[n][(n+1)/2],d[n][(n+2)/2]);  //最后只能走中间! get这个点
    	
    	return 0;
    }
    
  • 反思

最后一排只能走到 最中间的部分,但是注意 分成 奇数和偶数两种情况

巧妙的方法:

取最中间两个数的,表示方法记住:[(n+1)/2] [(n+2)/2]

认真审题!!注意到每一句话,太重要了


3.购物单

  • 题目

    链接: 购物单 - 蓝桥云课 (lanqiao.cn)

    小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

    这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。

    小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。

    现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

    取款机只能提供 100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。

    以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

    ****     180.90       88折
    ****      10.25       65折
    ****      56.14        9折
    ****     104.65        9折
    ****     100.30       88折
    ****     297.15        半价
    ****      26.75       65折
    ****     130.62        半价
    ****     240.28       58折
    ****     270.62        8折
    ****     115.87       88折
    ****     247.34       95折
    ****      73.21        9折
    ****     101.00        半价
    ****      79.54        半价
    ****     278.44        7折
    ****     199.26        半价
    ****      12.97        9折
    ****     166.30       78折
    ****     125.50       58折
    ****      84.98        9折
    ****     113.35       68折
    ****     166.57        半价
    ****      42.56        9折
    ****      81.90       95折
    ****     131.78        8折
    ****     255.89       78折
    ****     109.17        9折
    ****     146.69       68折
    ****     139.33       65折
    ****     141.16       78折
    ****     154.74        8折
    ****      59.42        8折
    ****      85.44       68折
    ****     293.70       88折
    ****     261.79       65折
    ****      11.30       88折
    ****     268.27       58折
    ****     128.29       88折
    ****     251.03        8折
    ****     208.39       75折
    ****     128.88       75折
    ****      62.06        9折
    ****     225.87       75折
    ****      12.89       75折
    ****      34.28       75折
    ****      62.16       58折
    ****     129.12        半价
    ****     218.37        半价
    ****     289.69        8折
    

    需要说明的是,88 折指的是按标价的 88 计算,而 8 折是按 80 计算,余者类推。 特别地,半价是按 50计算。

    请输出小明要从取款机上提取的金额,单位是元。

  • 第一次

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int sum=0;
    	
    	int n=50;
    	
    	int a,b;
    	
    	while(n--)
    	{
    		cin>>a>>b;  //这里,输入很是个问题
    		sum+=a*b;
    	}
    	
    	cout<<sum;
    	
    	return 0;
    }
    

    为了这个输入,我去 word 上去处理 数据,方便它的输入

    一系列的查找替换 处理好 之后 程序 还是不能正确输入

    调式发现 a一直是180

    在这里插入图片描述

    数据类型错了 应该是 double , 我一直写的 int , 最后才发现

    • 第二次——成功
    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	double sum=0;
    	
    	int n=50;
    	
    	double a,b;  //数据类型 错了
    	
    	while(n--)
    	{
    		cin>>a>>b;
    		sum+=a*b;
    	}
    	
    	cout<<sum;
    	
    	return 0;
    }
    
    • 通过看题解,还学会了一种方法,这个更加简便
      在这里插入图片描述
  • 反思

    1. 一定要确保数据类型使用正确
    2. 巧用 word 和 excel ,来解答
    3. 看了 python 的题解,tql ,打算简单学习一下 基本语法,填空够用就行

4.回文日期

  • 题目

    链接:回文日期 - 蓝桥云课 (lanqiao.cn)

    2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。

    有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。

    也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,顶多算 “千年两遇”。

    给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

    输入描述

    输入包含一个八位整数 N*,表示日期。

    对于所有评测用例,10000101≤N≤89991231,保证 N 是一个合法日期的 8 位数表示。

    输出描述

    输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

    示例

    输入

    20200202
    

    输出

    20211202
    21211212
    
    • 第一次

      #include<bits/stdc++.h>
      using namespace std;
      
      int main()
      {
      	int k;
      	cin>>k;
      	
      	int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
      	
      	int flagh=1,h=0,w=0;
      	
      	int resh,resw;
      	
      	while(!h||!w)
      	{
      		k++;
      		
      		//更新日期 
      		int d=k%100;
      		int m=k%10000/100;
      		int y=k/10000;
      		
      		if(y%4==0&&y%100!=0||y%400==0) a[2]=29;
      		else a[2]=28;
      		
      		if(d>a[m])
      		{
      			d=1,m++;
      		}
      		if(m>12)
      		{
      			m=1,y++;
      		}
      		
      		k=d+m*100+y*10000;
      		
      		//判断满足条件 
      		int t=k;
      		int b[8]={0}; //把每一位放到数组中去
      		 
      		int i=0;
      		while(t>0)
      		{
      			b[i++]=t%10;
      			t/=10;	
      		}
      		
      		//判断回文日期 
      		if(!h)  //表示还没找到 
      		{
      			for(int i=0;i<8;i++)
      			{
      				if(b[i]!=b[8-i-1]) 
      				{
      					flagh=0;  //不是回文,标记1 
      					break;
      				}
      			}
      			if(flagh) 
      			{
      				resh=k;
      				h=1;
      			}
      		}
      		
      		//判断完美日期 
      		if(!w)
      		{
      			int i;
      			if(b[0]==b[2]==b[5]==b[7]&&b[1]==b[3]==b[4]==b[6])
      			{
      				w=1;
      				resw=k;
      			}
      		 } 
      		 
      	 } 
      	 
      	 cout<<resh<<endl<<resw;
      	
      	return 0;
        }
      

      以运行超时告终

    • 第二次

      #include<bits/stdc++.h>
      using namespace std;
      
      bool isleap(int a)
      {
      	return a%4==0&&a%100!=0||a%400==0; 
      }
      
      bool check(int year,int month,int day)
      {
      	if(month==0||month>12) return false;
      	
      	int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
      	
      	if(isleap(year)) a[2]=29;
      	else a[2]=28;
      	
      	if(day>a[month]||day==0) return false;
      	else return true;
      }
      
      int main()
      {
      	int k;
      	cin>>k;
      	
      	int flag=1;
      	
      	for(int i=k+1;i<89991231;i++)
      	{
      			
      		int d=i%100;
      		int m=i%10000/100;
      		int y=i/10000;
      	
      		//判断满足条件 
      		int t=k;
      		int b[8]={0}; //把每一位放到数组中去
      		 
      		int j=0;
      		while(t>0)
      		{
      			b[j++]=t%10;
      			t/=10;	
      		}
      		
      		if(b[0]==b[7]&&b[1]==b[6]&&b[2]==b[5]&&b[3]==b[4]&&flag)
      		{
      			if(check(y,m,d))
      			{
      				cout<<i<<endl;
      				flag=0;
      			}
      			
      		}
      		if(b[0]==b[2]&&b[2]==b[5]&&b[5]==b[7]&&b[1]==b[3]&&b[3]==b[4]&&b[4]==b[6])
      			{
      				cout<<i<<endl;
      				return 0;
      			}	
      	}
      	
      	return 0;
        }
      

      再次以失败告终,但是我就是模拟的正确题解,不知哪里不行

    • 正确题解

      #include <iostream>
      using namespace std;
      
      bool isLeap(int y){
          return (y%4==0&&y%100!=0)||(y%400==0);
      }
      
      bool check(int year,int month,int day){//判断是否为合法日期
          if(month>12||month==0) return false;
          if(day>31) return false;
          if(month==2){
              if(isLeap(year)&&day>29)
                  return false;
              if(!isLeap(year)&&day>28)
                  return false;
          }
          if(month==4||month==6||month==9||month==11){
              if(day>30) return false;
          }
          return true;
      }
      int main()
      {
          int n,i;
          cin>>n;
          int a,b,c,d,e,f,g,h;//8位数字
          int year,month,day;
          bool flag=false;
          for(i=n+1;i<=99999999;i++){
              year=i/10000;
              month=(i%10000)/100;
              day=i%100;
              a=i%10;
              b=(i/10)%10;
              c=(i/100)%10;
              d=(i/1000)%10;
              e=(i/10000)%10;
              f=(i/100000)%10;
              g=(i/1000000)%10;
              h=(i/10000000)%10;
              if(a==h&&b==g&&c==f&&d==e&&flag==false){
                  if(check(year,month,day)){
                      cout<<i<<endl;
                      flag=true;//只输出一个回文
                  }
              }
              if(a==h&&b==g&&c==f&&d==e&&a==c&&b==d){
                  if(check(year,month,day)){
                      cout<<i<<endl;
                      break;
                  }
              }
      
          }
          return 0;
      }
      

Alt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/406128.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echarts 柱状堆叠图(图例和x轴都是动态的)

问题描述&#xff1a; echarts柱状堆叠图&#xff0c;是很常用的图表&#xff0c;官网的例子很简单 。图例&#xff08;legend&#xff09;&#xff0c;x轴&#xff08;xAxis&#xff09;都是写死的。但是一般实际应用中都是 动态的。下面就举个例子&#xff0c;实现图例和x轴…

uniapp开发微信小程序自定义顶部导航栏

自定义导航栏渐变色&#xff0c;先上效果 使用uniapp开发小程序&#xff0c;在不同界面&#xff0c;要去对页面进行修改顶部导航栏。 比如说要去定义导航栏的背景颜色&#xff0c;常规的去定义导航栏背景颜色 全局定义导航栏 "window": {"navigationBarBackg…

猿创征文|一名大三学生的前端学习之路(真情流露)

✅ 作者简介&#xff1a;一名大三的大学生&#xff0c;致力于提高前端开发能力 ✨ 个人主页&#xff1a;前端小白在前进的主页 &#x1f525; 系列专栏 &#xff1a; node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 &#x1f340; 学习格言: ☀️ 打不倒你的会使你更强&#xf…

vue3中使用axios

vue3中使用axios 1.axios在vue3.x中的基础入门使用 在不涉及使用axios进行请求拦截以及响应拦截的场景下&#xff0c;axios的使用可以简化为以下步骤。 step1. 使用npm安装axios npm install axiosstep2. 我们将要使用的axios实例单独编写成一个js文件&#xff0c;文件夹可以建…

猿创征文|【C++游戏引擎Easy2D】学C++还不会绘制一个简单的二维图形?一篇文章教会你

&#x1f9db;‍♂️iecne个人主页&#xff1a;&#xff1a;iecne的学习日志 &#x1f4a1;每天关注iecne的作品&#xff0c;一起进步 &#x1f4aa;学C必看iecne 本文专栏&#xff1a;【C游戏引擎】. &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; ✨前…

【Vue组件间通信】 全局事件总线、订阅与发布

目录 一、全局事件总线 作用 安装 组件使用案例 案例分析 组件一&#xff08;小明&#xff09; 组件二&#xff08;小红&#xff09; 效果展示 二、订阅与发布 安装 组件使用案例 案例分析 组件一&#xff08;小明&#xff09; 组件二&#xff08;小红&#xff…

Python爬虫之Web自动化测试工具SeleniumChrome handless

​ ​ 作者 : SYFStrive 博客首页 : HomePage &#x1f967; 上一篇续文传送门 &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;如果觉得文章对你有帮助可以点点关注…

Python流星雨代码

前言 用Python画场流星雨看看&#xff0c;源码见文末公众号哈。 流星类 def __init__(self): self.r ra.randint(50,100) self.t ra.randint(1,3) self.x ra.randint(-2000,1000) #流星的横坐标 self.y ra.randint(0,500) #流星…

出道即封神的ChatGPT,现在怎么样了?

从互联网的普及到智能手机&#xff0c;都让广袤的世界触手而及&#xff0c;如今身在浪潮中的我们&#xff0c;已深知其力。前阵子爆火的ChatGPT&#xff0c;不少人保持观望态度。现如今&#xff0c;国内关于ChatGPT的各大社群讨论&#xff0c;似乎沉寂了不少&#xff0c;现在怎…

Web自动化测试怎么做?Web自动化测试的详细流程和步骤

一、什么是web自动化测试 自动化&#xff08;Automation&#xff09;是指机器设备、系统或过程&#xff08;生产、管理过程&#xff09;在没有人或较少人的直接参与下&#xff0c;按照人的要求&#xff0c;经过自动检测、信息处理、分析判断、操纵控制&#xff0c;实现预期的目…

使用node命令提示: ‘node‘ 不是内部或外部命令,也不是可运行的程序

报错&#xff1a;使用node命令提示: ‘node‘ 不是内部或外部命令&#xff0c;也不是可运行的程序 原因&#xff1a;没安装node.js 或者 没配置好环境变量 情况1&#xff1a;安装node.js&#xff1a; 在官网下载 .msi 文件&#xff1a;Node.js 中文网 (nodejs.cn) 步骤 1 : 下…

使用Freemarker来生成pdf文件

2022-09-02 今天接到一个生成pdf的任务&#xff0c;并且web端要能下载&#xff1b;在网上也找了许多的工具如&#xff1a;itext等&#xff0c;感觉挺复杂的没那么好用&#xff0c;然后想起了之前使用Freemarker来生成world文档&#xff0c;挺好用的&#xff0c;然后调查发现也能…

【JavaWeb】重新认识 Servlet 的初始化 [ 回顾 Servlet ]

&#x1f947;作者 .29. 的✔博客主页✔ &#x1f947;记录JavaWeb学习的专栏&#xff1a;Web专栏 &#x1f947;向前走&#xff0c;不要回头。 您的点赞&#xff0c;收藏以及关注是对作者最大的鼓励喔 ~~ 重新认识Servlet的初始化一、回顾Servlet1.什么是Servlet2.Servlet规范…

设置背景图片大小的方法

背景图片大小设置 语法&#xff1a;background-size:宽度 高度&#xff1b;作用&#xff1a;设置背景图片大小取值&#xff1a; 取值场景数字px简单方便&#xff0c;常用百分比相当于当前盒子自身的宽高百分比contain包含&#xff0c;将背景图片等比例缩放&#xff0c;直到不…

Vue 之 echarts 图表数据可视化的基础使用(简单绘制各种图表、地图)

Vue 之 echarts 图表数据可视化的基础使用&#xff08;简单绘制各种图表、地图&#xff09; 目录 Vue 之 echarts 图表数据可视化的基础使用&#xff08;简单绘制各种图表、地图&#xff09; 一、简单介绍 二、环境搭建 三、使用 echarts 四、自动缩放 echarts 五、数据更…

【网络通信】websocket如何断线重连

Vue <template><div><button click"sendDevName(xxxxxxxx)">发送</button>{{data}}</div> </template><script> export default {name: HelloWorld,data () {return {data: null}},// html加载完成后执行initWebSocket()…

Vue3-路由跳转专题详细总结

一、基本路由 点击事件似乎可以使用模板更改视图中的内容&#xff0c;个人认为与路由的区别是路由能使网页中的地址栏发生变化 请先阅读基础第二篇 1.创建一个组件,并引入 2.js文件中配置路径 //name相当于别名{path:/tabView,component:TabView},{name:myComPany,path:compan…

Vue3项目搭建全过程

目录 一、前言 二、搭建准备 三、搭建项目 四、启动项目 一、前言 在2020年的9月19日&#xff0c;万众期待的Vue3终于发布了正式版&#xff0c;命名为“One Piece”。 它也带来了很多新的特性&#xff1a;更好的性能、更小的包体积、更好的TypeScript集成、更优秀的API设…

前端面试真题宝典(一)

面试题真题 闭包和柯里化 闭包是什么&#xff1f;闭包是能够读取其他函数内部变量的函数 柯里化是什么&#xff1f;柯里化是把一个多个参数的函数转化为单参数函数的方法 闭包的用途&#xff1a;闭包的主要用途是为了不污染全局变量&#xff0c;用闭包的局部变量来做一些库…

30个题型+代码(冲刺2023蓝桥杯)(中)

2023.3.13~4.13持续更新 目录 &#x1f34e;注意 &#x1f33c;前言 &#x1f33c;十&#xff0c;KMP&#xff08;留坑&#xff09; &#x1f33c;十一&#xff0c;Trie&#xff08;留坑&#xff09; &#x1f33c;十二&#xff0c;BFS &#x1f44a;(一)1562. 微博转发…