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

[蓝桥杯 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.mfbz.cn/a/464173.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubectl常用命令

管理资源&#xff08;查看、创建、更新、删除&#xff09; 查看node资源 kubectl get nodes查看命名空间 kubectl get ns查看service资源 -n 指明所属的命名空间&#xff0c;不写默认看命名空间为default下的所有service kubectl get svc -n default查看pod资源 -n 指明所…

如何解决宝塔面板软件安装慢的问题

如果你正在使用宝塔面板管理你的服务器&#xff0c;并且在安装软件时遇到了下载速度缓慢的问题&#xff0c;不用担心&#xff0c;这可能是由于默认的下载节点出现了异常。幸运的是&#xff0c;宝塔提供了一种快速修复的方法。 问题表现 在宝塔面板安装软件时&#xff0c;你可…

嵌入式开发基础总结

学习目标 1.了解嵌入式开发 2.开发环境的搭建 3.Linux操作系统的基本操作 一、了解嵌入式开发 以应用为中心&#xff0c;以计算机技术为基础&#xff0c;软硬件可裁剪&#xff0c;适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 1.嵌入式可以干…

盒子IM开源仿微信聊天程序源码,可以商用

安装教程 1.安装运行环境 安装node:v14.16.0安装jdk:1.8安装maven:3.6.3安装mysql:5.7,密码分别为root/root,运行sql脚本(脚本在im-platfrom的resources/db目录)安装redis:5.0安装minio&#xff0c;命令端口使用9001&#xff0c;并创建一个名为”box-im”的bucket&#xff0c…

力扣59. 螺旋矩阵 II

思路&#xff1a;此题思路就是绕圈遍历&#xff0c;全靠条件处理技巧&#xff0c;重点要清楚的就是循环不变量&#xff1a;左闭右开&#xff08;即拐弯处的一个数&#xff0c;留给第二行处理&#xff09; 以下是代码随想录的作者的一张图片&#xff0c;每次for循环&#xff0c;…

新!PCA+DBO+K-means聚类,蜣螂优化算法DBO优化K-means,适合学习,也适合发paper。

PCADBOK-means聚类&#xff0c;蜣螂优化算法DBO优化K-means&#xff0c;适合学习&#xff0c;也适合发paper。 一、 蜣螂优化算法 摘要&#xff1a;受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发&#xff0c;提出了一种新的基于种群的优化算法(Dung Beetle Optimizer, DBO…

应对磁盘管理挑战:Linux磁盘分区挂载命令实践指南

前言 在今天的技术世界中&#xff0c;Linux已成为广泛使用的操作系统之一&#xff0c;而对于运维人员和开发人员来说&#xff0c;磁盘分区挂载是一个至关重要的任务。正确地管理和配置磁盘分区挂载可以极大地提升系统的性能和可靠性&#xff0c;同时也能确保数据的安全性。 通…

初识Netty网络编程

Netty网络编程 对于高并发的Reactor线程模型&#xff0c;Netty是如何支持的&#xff1f; Netty线程模型是基于Reactor模型实现的&#xff0c;对Reeactor三种模式都有非常好的支持&#xff0c;并做了一定的改进&#xff0c;也非常的灵活&#xff0c;一般情况&#xff0c;在服务端…

【BUG 弹药库】二分模板的优化

文章目录 1. 为什么要优化二分算法&#xff1f;2. 如何去优化原来的二分模板&#xff1f;3. 案例分析 1. 为什么要优化二分算法&#xff1f; ① 平常学习的二分整数的算法模板边界的问题很容易出错&#xff0c;不知道什么时候用 l mid&#xff0c;r mid - 1&#xff1b;或者是…

内网渗透小结

域产生原因 简单来说就是为了安全和方便控制域内主机 一个具有一定规模的企业&#xff0c;每天都可能面临员工入职和离职&#xff0c;因此网络管理部门经常需要对域成员主机进行格式化消除磁盘的文件&#xff0c;然后重装系统及软件&#xff0c;以提供给新员工使用&#xff1…

python--剑指offer--中等--07. 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如&#xff0c;给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a; 3/ 9 20 / 15 7 …

Linux 下使用 socket 实现 TCP 客户端

目录 示例代码板级验证更多内容 套接字&#xff08;socket&#xff09;是 Linux 下的一种进程间通信机制&#xff08;socket IPC&#xff09;&#xff0c;它不仅支持同一主机的不同进程间通信&#xff0c;还支持跨网络的不同主机的进程间通信。 socket 允许通过标准的文件描述…

HarmonyOS-鸿蒙系统概述

你了解鸿蒙系统吗&#xff1f; 你看好鸿蒙系统吗&#xff1f; 今年秋季即将推出的HarmonyOS Next 星河版热度空前&#xff0c;一起来了解一下吧。本文将从HarmonyOS 的应用场景、发展历程、架构、开发语言、开发工具、生态建设六个角度聊一聊个人的理解。 1、应用场景 鸿蒙…

C# 打开文件对话框(OpenFileDialog)

OpenFileDialog&#xff1a;可以打开指定后缀名的文件&#xff0c;既能单个打开文件也能批量打开文件 /// <summary>/// 批量打开文档/// 引用&#xff1a;System.Window.Fomrs.OpenFileDialog/// </summary>public void OpenFile(){OpenFileDialog dialog new Op…

Linux中文件和目录管理(创建删除移动复制)

目录 1——一次建立一个或多个目录&#xff1a;mkdir ​2——创建一个空文件&#xff1a;touch 3——移动和重命名&#xff1a;mv 4——复制文件和目录&#xff1a;cp 5—— 删除目录和文件&#xff1a;rmdir和rm 在学习文件与目录的管理的一些命令之前&#xff0c;我们先…

QT5.14.2对象树之魅力 -- 让Qt编程如行云流水

对象编程是现代编程语言中不可或缺的核心理念。在C等编程语言中&#xff0c;对象的生命周期管理一直是开发者头疼的难题。手动管理对象创建和销毁&#xff0c;而一不小心就有可能导致内存泄漏等严重问题。而Qt以其独有的对象树模型&#xff0c;为我们解决了这一烦恼&#xff0c…

并查集(详解+例题)

1、作用 将两个集合合并 询问两个元素是否在一个集合中 2、基本原理 每个集合用一颗树表示。树根的编号就是整个集合的编号。每个节点存储它的父节点&#xff0c;p[x]表示x的父节点。 3、实现 问题1&#xff1a;如何判断树根&#xff1a;if(p[x]x); 问题2&#xff1a;如何求…

WiFi7 MLO技术框架

在2019年7月份&#xff0c;关于WiFi7 MLO的开放式讨论已经基本完成了&#xff0c;关注点集中体现在band steering/balancing和multi band aggregation上面。 英特尔基于开放讨论的基础&#xff0c;提出了MLO的协议技术框架&#xff0c;尽量兼容已有的协议文本&#xff0c;并提…

大数据数据分析-scala、IDEA、jdk之间的搭配关系

Scala主要是一门面向对象编程语言和函数式编程语言。 一、大数据框架&#xff08;处理海量/流式数据&#xff09; - ---以HADOOP 2. x为系列的大数据生态系统处理框架 离线数据分析&#xff0c;分析的数据为N1天数据 -----MapReduce 并行计算框架&#xff0c;分而治之…

C语言基础数据结构——栈和队列

目录 1.栈 1.1栈的选型 1.2 实现代码 2.队列 2.1整体思路 2.2初始化和销毁 2.3出入队列 2.4取队列元素 2.5判断队列是否为空 2.6返回队列中元素个数 2.7 Test 1.栈 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数…
最新文章