蓝桥杯刷题 Day36 倒计时26天 纯练题的一天

news2024/11/21 2:27:55

[蓝桥杯 2022 省 B] 积木画

题目描述

小明最近迷上了积木画,有这么两种类型的积木,分别为 I 型(大小为 2个单位面积) 和 L 型 (大小为 3 个单位面积):

同时,小明有一块面积大小为2×N 的画布,画布由2×N 个 1×1 区域构成。小明需要用以上两种积木将画布拼满,他想知道总共有多少种不同的方式? 积木可以任意旋转,且画布的方向固定。

输入格式

输入一个整数 N,表示画布大小。

输出格式

输出一个整数表示答案。由于答案可能很大,所以输出其对 10000000071000000007(即 10^9+7)取模后的值。

代码表示:

#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9+7,N = 1e7;
int main()
{
    int f[N]={0,1,2,5};
    int n;
    scanf("%d",&n);
    for(int i=4;i<=n;++i)
        f[i] = (2*f[i-1]%mod+f[i-3]%mod)%mod;
    printf("%d",f[n]);
    return 0;
}

解析:

这是一道动态规划的题,利用递归的思想,寻找对应的等式。


[蓝桥杯 2013 省 AB] 错误票据

题目描述

某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的 ID 号,全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外一个 ID 重号。

你的任务是通过编程,找出断号的 ID 和重号的 ID。数据保证断号不可能发生在最大和最小号。

输入格式

一个整数N(N<100) 表示后面数据行数,接着读入 N 行数据,每行数据长度不等,是用空格分开的若干个(不大于 100 个)正整数(不大于 105),每个整数代表一个 ID 号。

输出格式

要求程序首先输入要求程序输出 1 行,含两个整数 m,n,用空格分隔,其中,m 表示断号 ID,n 表示重号 ID。

代码表示: 

#include <bits/stdc++.h>
using namespace std;
//l用于记录数组中的元素个数 
int a[10001],l;
int main()
{
	int N,m,n,i;
	string s;//存储每行输入的字符串 
	cin>>N;
//忽略掉换行符,以便后续可以使用 getline 函数读取完整的一行输入
	cin.ignore(numeric_limits<streamsize>::max(),'\n');
	
	for(i=1;i<=N;i++)
	{
		getline(cin,s);//读取一行输入存储在字符串 s 
		stringstream sin(s);//stringstream 可以将字符串当作流来处理便进行后续的分割
		while(sin>>a[++l]);// sin 中的每个整数依次读取并存储在数组 a
	//++l 用于递增计数器 l,确保每个整数都存储在不同的位置上
	}
	sort(a+1,a+l+1);//给出的整数可能是乱序的所以需要先排序 
	for(i=2;i<=l;i++)//循环遍历 
	if(a[i]==a[i+1]-2) m=a[i]+1;//相差为 2说明存在断号,存在变量m 
	else if(a[i]==a[i+1]) n=a[i];//存在重号存在n 
	cout<<m<<" "<<n;
	return 0;
} 

心得体会:

1、cin.ignore(numeric_limits<streamsize>::max(),'\n') 是一行代码,用于清除输入流中的换行符。cin 是 C++ 标准库中的输入流对象,ignore() 是 cin 对象的成员函数。ignore() 函数用于跳过输入流中的字符,可以指定要跳过的字符数和要跳过的特定字符。numeric_limits<streamsize>::max() 返回 streamsize 类型的最大值,表示要跳过的字符数为输入流中的最大字符数。这里使用 numeric_limits<streamsize>::max() 是为了确保跳过输入流中的所有字符。'\n' 是一个字符常量,表示换行符。ignore() 函数的第二个参数是要跳过的特定字符。

所以,cin.ignore(numeric_limits<streamsize>::max(),'\n') 的作用是跳过输入流中的所有字符,直到遇到换行符为止。这样可以确保在调用 getline() 函数之前,输入流中没有遗留的换行符影响。

2、使用 stringstream 的目的是将每行输入的字符串进行分割,提取其中的整数,并将这些整数存储到数组 a 中。这样做的好处是:

1)方便提取整数:stringstream 提供了诸如 operator>> 的操作符重载,可以方便地从流中提取数据。在这里,我们使用 sin >> a[++l] 从 sin 中提取下一个整数,并将其存储到数组 a 中。

2)处理不定数量的整数:每行输入的整数数量可能不确定,使用 stringstream 可以灵活地处理不定数量的整数,而不需要提前指定数组的大小。

3)方便类型转换:stringstream 可以自动将提取的字符串转换为相应的数据类型。在这里,我们将提取的字符串转换为整数,并将其存储到数组 a 中。


[蓝桥杯 2021 省 B2] 特殊年份

题目描述

今年是 2021 年,2021 这个数字非常特殊, 它的千位和十位相等, 个位比百位大 1,我们称满足这样条件的年份为特殊年份。

输入 5个年份,请计算这里面有多少个特殊年份。

输入格式

输入 5 行,每行一个 4 位十进制数(数值范围为1000 至 9999),表示一个年份。

输出格式

输出一个整数,表示输入的 5 个年份中有多少个特殊年份。

代码表示

#include <bits/stdc++.h>
using namespace std;


int main() {
    int ans = 0;
    for (int i = 0; i < 5; i++) {
        string input;//char input[5];
        cin >> input;
    
        int a = input[0] - '0';
        int b = input[1] - '0';
        int c = input[2] - '0';
        int d = input[3] - '0';

        if (a == c && b + 1 == d)
            ans++;
    }

    cout << ans << endl;
    return 0;
}

心得体会

用字符类型的变量表示一个数字字符时实际上它们在内存中存储的是对应的ASCII码值。 '0'的ASCII码值是48当我们想将字符类型的数字转换为相应的整数时,可以通过减去字符 '0' 的ASCII码值来实现,字符类型的数字字符与对应的整数之间具有固定的差值,即字符 '0' 的ASCII码值是48,而整数 0 的值是0,它们之间相差了48。

比较char 和string:

1、字符数组:

1)使用下标操作符 []:可以通过索引访问字符数组中的每个字符。例如,charArray[0] 表示字符数组的第一个字符。

2)使用循环遍历:可以使用循环结构(如 for 循环或 while 循环)以递增索引的方式遍历字符数组,并逐个读取每个字符。

int main() {
    // 字符数组
    char charArray[] = "Hello";

    // 使用下标操作符读取每个字符
    for (int i = 0; charArray[i] != '\0'; i++) {
        cout << charArray[i] << " ";
    }
    cout << endl;

    // 使用循环遍历读取每个字符
    int index = 0;
    while (charArray[index] != '\0') {
        cout << charArray[index] << " ";
        index++;
    }
    cout << endl;

 }

2、字符串对象:

1)使用下标操作符 []:可以通过索引访问字符串对象中的每个字符。例如,str[0] 表示字符串对象的第一个字符。

2)使用循环遍历:可以使用范围-based for 循环或迭代器来遍历字符串对象,并逐个读取每个字符。

int main() {
    // 字符串对象
    string str = "Hello";

    // 使用下标操作符读取每个字符
    for (int i = 0; i < str.length(); i++) {
        cout << str[i] << " ";
    }
    cout << endl;

    // 使用范围-based for循环读取每个字符
    for (char ch : str) {
        cout << ch << " ";
    }
    cout << endl;

    // 使用迭代器读取每个字符
    for (string::iterator it = str.begin(); it != str.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

[蓝桥杯 2021 省 AB2] 小平方

题目描述

小蓝发现,对于一个正整数 n 和一个小于 n 的正整数 v,将 v 平方后对 n 取余可能小于 n 的一半,也可能大于等于 n 的一半。请问,在 1 到 n−1 中, 有多少个数平方后除以 n 的余数小于 n 的一半

例如,当 n=4 时,1,2,3 的平方除以 4 的余数都小于 4的一半。

如,当 n=5 时, 1,4 的平方除以 5 的余数都是 1,小于 5 的一半。而 2,3 的平方除以 5 的余数都是 4, 大于等于 5 的一半。

输入格式

输入一行包含一个整数 n 。

输出格式

输出一个整数,表示满足条件的数的数量。

代码表示

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n,ann=0;
    cin>>n;
    for(int i=1;i<n;++i){
    	if((i*i)%n<n*0.5) ann++;
	}
	cout<<ann;
    return 0;
}

[蓝桥杯 2022 省 B] 刷题统计

题目描述

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?

输入格式

输入一行包含三个整数 a,b 和 n.

输出格式

输出一个整数代表天数

代码表示

#include <bits/stdc++.h>
using namespace std;

long long a,b,n; 
int main(){
	cin>>a>>b>>n;
	long long s=5*a+b*2; //一周做的题数
	long long s1=n%s; //还剩几题
	long long s2=n/s; //做了几周
	if(s1<=5*a){//如果工作日能完成
	    if(s1%a==0){
	    	cout<<s1/a+s2*7;
		}else{
			cout<<s1/a+1+s2*7;
		}
    }
	else{ 
        if((s1-5*a)>b){
	    	cout<<s2*7+7;
		}else {
			cout<<s2*7+6;
		}
    }
	return 0;
}

心得体会:

活用除号➗和取余%,整在的一个星期可以独立出来计算。

注意文章在最后提示了数据非常的大所以要用long long类型。

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

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

相关文章

vb.net+zxing.net随机彩色二维码、条形码

需要zxing库支持ZXing.NET Generate QR Code & Barcode in C# Alternatives | IronBarcode 效果图&#xff1a; 思路&#xff1a;先生成1个单位的二维码&#xff0c;然后再通过像素填充颜色&#xff0c;颜色数组要通过洗牌算法 洗牌算法 Dim shuffledCards As New List(…

docker-compose 部署nginx和jdk步骤

** yum安装jdk ** 1、​​yum -y list java* 查看可安装java版本 选择安装 java-1.8.0-openjdk-accessibility.x86_64 2、​​yum install -y java-1.8.0-openjdk-devel.x86_64 耐心等待安装完成即可 3、​java -version​​ 即可查看当前安装的java版本 4、yum安装的jdk&am…

Java代码审计安全篇-XXE(XML外部实体注入)漏洞

前言&#xff1a; 堕落了三个月&#xff0c;现在因为被找实习而困扰&#xff0c;着实自己能力不足&#xff0c;从今天开始 每天沉淀一点点 &#xff0c;准备秋招 加油 注意&#xff1a; 本文章参考qax的网络安全java代码审计&#xff0c;记录自己的学习过程&#xff0c;还希望各…

HTML5+CSS3小实例:衣服颜色选择器

实例:衣服颜色选择器 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=…

软件杯 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数&#xff1a;2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

262:vue+openlayers 移动地图获取中心点经纬度信息

第262个 点击查看专栏目录 本示例介绍演示如何在vue+openlayers中移动地图并获取中心点经纬度信息。这里主要用到了是view的getCenter方法,这一功能在实际项目中很有用,能给出一个清晰的定位。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示…

解决后端传给前端的日期问题

解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式化 但这种方式&#xff0c;需要在每个时间属性上都要加上该注解&#xff0c;使用较麻烦&#xff0c;不能全局处理。 2). 方式二&#xff08;推荐 ) 在WebMvcConfiguration中扩展SpringMVC的消息转…

JDBC基础(CRUD)使用详解(mysql)

1. 什么是JDBC JDBC,即Java Database Connectivity,java数据库连接.是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范.这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java 开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访…

测试人员Bug书写规范

&#x1f4cb; 个人简介 作者简介&#xff1a;大家好&#xff0c;我是凝小飞&#xff0c;软件测试领域作者支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 在测试人员日常工作中&#xff0c;关于bug的编写和定义是一个比较经常的工作&#xff0c;如果bug编写描…

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS多路视频融合叠加,提供1套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收OSD多路视频融合叠加应用本方案的S…

【Flink SQL】Flink SQL 基础概念(四):SQL 的时间属性

《Flink SQL 基础概念》系列&#xff0c;共包含以下 5 篇文章&#xff1a; Flink SQL 基础概念&#xff08;一&#xff09;&#xff1a;SQL & Table 运行环境、基本概念及常用 APIFlink SQL 基础概念&#xff08;二&#xff09;&#xff1a;数据类型Flink SQL 基础概念&am…

Java多线程实战-CountDownLatch模拟压测实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

QT UI窗口常见操作

MainWidget::MainWidget(QWidget *parent): QWidget(parent), ui(new Ui::MainWidget) {ui->setupUi(this);// 设置主窗口背景颜色QPalette plt;plt.setColor(QPalette::Window,QColor(180,220,130));this->setPalette(plt);// 禁止窗口最大化按钮setWindowFlags(windowF…

【前端Vue】Vue3+Pinia小兔鲜电商项目第1篇:认识Vue3,1. Vue3组合式API体验【附代码文档】

全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 全套教程部分目录&#xff1a; 部分文件图片&#xff1a; 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API vue <script> ex…

Python爬虫与数据可视化源码免费领取

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

Ubuntu18.04 中编译 TI 官方的ros驱动包中 autonomous_robotics_ros 包所存在的问题及解决方案

环境&#xff1a; 安装有 ROS 系统的 Ubuntu18.04 环境&#xff0c;并且已将 TI 官方的毫米波雷达 ROS 驱动下载到Ubuntu18.04系统中&#xff0c;如需获取此代码请点击此链接根据教程下载即可。 代码下载链接&#xff1a;TI IWR6843ISK ROS驱动程序搭建-CSDN博客 问题1&…

天软专业课 C语言 24

文章目录 基础知识进制转换字符在计算机内部的表示 程序设计的基本概念程序结构化程序设计 C程序设计的初识简单的C程序标识符、常量与变量整型数据实型数据字符型数据算数表达式赋值表达式自加自减与逗号运算符 顺序结构赋值语句数据的输出数据的输入复合语句与空语句程序实例…

Android VINF

周末搞这玩意欲仙欲死&#xff0c;没办法只有看看。VINTF是供应商接口对象&#xff08;VINTF 对象&#xff09;&#xff0c;准确的说&#xff0c;这个是属于兼容性矩阵概念。。。有点想起了以前看过的一个电影&#xff0c;异次元杀阵。。。下面是谷歌官方的图。 本质上其实就是…

Linux——开发工具yum与vim

Linux——开发工具yum与vim 文章目录 Linux——开发工具yum与vim一、Linux 软件包管理器-yum1.1 什么是软件包1.2 yum的使用 二、linux下的编辑器-vim2.1 vim的基本概念2.2 vim的基本操作插入模式下的基本命令底行模式下的基本指令 2.3 vim的配置 一、Linux 软件包管理器-yum …

C++面试宝典第35题:滑动窗口最大值

题目 给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。滑动窗口每次只向右移动一位,你只可以看到在滑动窗口内的k个数字,请返回滑动窗口中的最大值。 示例: 输入:nums = [1, 3, -1, -3, 5, 3, 6, 7], k = 3 输出:[3, 3, 5, 5, 6, 7] 解析 这…