蓝桥杯常考的找规律题

news2025/4/23 19:03:50

目录

灵感来源:

B站视频链接:

找规律题具有什么样的特点:

报数游戏(Java组):

题目描述:

题目链接:

思路详解:

代码详解:

阶乘求和(Java组):

题目描述:

题目链接:

前置知识:

思路详解:

代码详解:

数字诗意(C/C++组):

题目描述:

题目链接:

思路详解:

代码详解:

平方差(C/C++组):

题解链接:


灵感来源:

这篇博客相当于一个题解合集,灵感来源于B站UP主“溶金落梧桐”,视频标题为“蓝桥杯常考的找规律题,学会思路轻松拿捏”。这个UP主是我在考试前刷到的,这位大佬分享了很多蓝桥杯的学习视频,大家可以去B站了解学习。下面我会把视频链接附上,建议大家自行观看视频学习,我的博客主要是对代码进行了整理合集,也算是自己拿来复习总结的资料

温馨提示:这里面的题目包含C/C++组,Java组以及Python组的题目,但是我这里全部都是用C/C++的方法写的题解

B站视频链接:

【蓝桥杯常考的找规律题,学会套路轻松拿捏】

找规律题具有什么样的特点:

数据非常大,通常大于10^8,看上去非常吓人,肯定暴力跑不出来

找规律题的两个特性:

1.周期性(结果在固定后重复)

2.答案符合某种递推式

报数游戏(Java组):

题目描述:

题目链接:

蓝桥云课 报数游戏

思路详解:

找规律,先尝试写出序列中的前100项,具体可以结合代码看,代码注释的非常具体

代码详解:

#include<bits/stdc++.h>  //蓝桥杯常考的找规律题,特点:数据非常大,通常大于10^8,看上去非常吓人,肯定 
using namespace std;     //暴力跑不出来 
//这题要求满足题目要求的第202420242024个数是多少,这个数据大约为2*10^11,真暴力用电脑跑得3000s左右
//而且考试的机子比自己的电脑更慢
int main()
{
	printf("2429042904288");
	return 0;
}
//该怎么办呢? 找规律,先尝试写出序列中的前100项 
//int ans;    ans用于记录当前枚举到第几个数,用于终止枚举 
//
//int main()
//{
//	for(int i=1;;i++)
//	{
//		if(ans==100)
//		{
//			return 0;
//		}
//		if(i%20==0||i%24==0)
//		{
//			cout<<i<<endl;
//			ans++;
//		}
//	}
//}
//20 24 40 48 60 72 80 96 100 120 140 144 160 168
//找规律发现第偶数位都是24的倍数,第2位是24,第4位是48,第6位是72
//可以总结出第i(i是偶数)位是24*(i/2),所以第202420242024位是24*101210121012=2429042904288

阶乘求和(Java组):

题目描述:

题目链接:

蓝桥云课 阶乘求和

前置知识:

1.如何求阶乘的和?定义fac来维护i的阶乘,用ans累加求和

题目链接:

B2153 求阶乘的和 - 洛谷

代码:

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

int n;
int ans;

int main()
{
	cin>>n;
	int fac=1;  //用fac来维护i的阶乘 
	for(int i=1;i<=n;i++)
	{
		fac=fac*i;
		ans+=fac;
	}
	cout<<ans<<endl;
	return 0;
}

2.阶乘尾零:对于n!,随着n变大,n!末尾的0一定越多。题目要求202320232023!的末尾9位数字,这个数据范围是2*10^11,显然暴力做不了,如果知道阶乘尾零的性质,就可以知道其实n大到某一个程度之后再增大末尾9位数字是不变的

3.模运算的加法分配律:(a+b)%p=(A%p+b%p)%p,为什么要用到模运算的加法分配律,因为当计算阶乘之和时,阶乘的值会迅速增大,可能会爆long long导致溢出错误

思路详解:

数据范围是2*10^11,显然暴力做不了,如果知道阶乘尾零的性质,就可以知道其实n大到某一个程度之后再增大末尾9位数字是不变的

如果不知道阶乘尾零的性质,就先尝试前100项再找规律

代码详解:

#include<bits/stdc++.h>  //蓝桥杯常考的找规律题 
using namespace std;     //有个东西叫阶乘尾零:对于n!,随着n变大,n!末尾的0一定越多 
//题目要求202320232023!的末尾9位数字,这个数据范围是2*10^11,显然暴力做不了,如果知道阶乘尾零的性质,
//就可以知道其实n大到某一个程度之后再增大末尾9位数字是不变的

int main()
{
	printf("420940313");
	return 0;
}
//如果不知道阶乘尾零的性质,就先尝试前100项再找规律
//题目求阶乘末尾的9位数字怎么办? %1e9即可
//模运算的加法分配律:(a+b)%p=(A%p+b%p)%p,为什么要用到模运算的加法分配律,因为当计算阶乘之和时,阶乘
//的值会迅速增大,可能会爆long long导致溢出错误 
//int main()
//{
//	long long x=1e9;
//	long long ans=0;
//	long long fac=1;            定义fac是为了维护i的阶乘 
//	for(int i=1;i<=100;i++)
//	{
//		fac=(fac*i)%x;          fac=fac*i;  实际上先求阶乘之和再取模可能会爆long long导致溢出错误 
//		ans=(ans+fac)%x;        ans+=fac;
//		cout<<ans<<endl;        ans%=x;      在取模之前可能ans就已经溢出了,所以输出结果会出现负数 
//	}                           cout<<ans<<endl;
//	return 0;
//}
//通过输出可以发现规律,到后面n越来越大的时候,后9位数字其实都一模一样,更不用说n=202320232023了
//如何理解代码中模运算的加法分配律的使用:
//fac=fac*i表示求单个阶乘 eg:1! 2! 3! 4!
//fac=(fac*i)%1e9表示每个单个阶乘取模于1e9 eg:(1!)%1e9 (2!)%1e9
//ans+=fac表示把单个阶乘加起来求和,即阶乘之和 eg:1!+2!+3!+4!
//fac=(fac*i)%1e9和ans=(ans+fac)%1e9表示之前的结果加上单个阶乘取模于1e9的整体再取模于1e9
//即i=1时,ans=(1!%1e9)%1e9  i=2时ans=((1!%1e9)%1e9+(2!%1e9))%1e9

数字诗意(C/C++组):

题目描述:

题目链接:

P10900 [蓝桥杯 2024 省 C] 数字诗意 - 洛谷

数字诗意 - 蓝桥云课

思路详解:

先暴力写个100项看看有没有什么规律,代码里注释的很详细,结合代码看就行

代码详解:

#include<bits/stdc++.h> //蓝桥杯常考的找规律的题,一看题目数据ai最大为10^16,就想一下能不能规律 
using namespace std;    //先暴力写个100项看看有没有什么规律 

const int N=2e5+10;     //开大一点,防止数字越界 

int n;
long long a[N]; //由题ai最大为10^16,会爆int,所以开long long 
int ans; //由题ans记录要删除的数字个数,找规律发现要删的是2的幂次方,由于指数爆炸所以ans开int就行 

int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		scanf("%lld",&a[i]);
		int x=log2(a[i]);  //对a[i]进行以2为底的对数运算,int x所以x取的是运算结果的整数部分 
		if((long long)1<<x==a[i]) //1<<x表示将1左移x位,即2^x的幂运算 
		{                         //2^x可能会爆int,开个强制类型转换再判断是否等于a[i] 
			ans++;     //等于a[i]就说明log2(a[i])就是没有小数部分,即a[i]就是2的幂次方 
		}
	}
	cout<<ans<<endl;
	return 0;
}
//bool check(int x)
//{
//	for(int i=1;i<x;i++) //i表示的是从i开始枚举连续的正整数,i=5表示从5开始枚举 
//	{
//		int sum=0;       //每次从i开始枚举都要定义sum=0 
//		for(int j=i;j<x;j++) //j表示的是枚举的正整数,这个for循环是枚举连续正整数求和的过程 
//		{
//			sum+=j; //每枚举一个数就加到sum
//			if(sum==x) //每枚举一个数就判断sum,如果sum==x表示x可以用至少两个连续的正整数表示 
//			{
//				return true;
//			}
//		}
//	}
//	return false;
//}
//
//int main()
//{
//	for(int i=3;i<=10000;i++) //由题1和2不能用至少两个连续的正整数相加,所以从3开始 
//	{
//		if(check(i)==false) //false表示不能用至少两个连续的正整数相加 
//		{
//			cout<<i<<' ';   //把不满足要求的输出来看看有没有规律 
//		}
//	}
//	return 0;
//}
//i<=100中不能用至少两个连续的正整数相加的是4 8 16 32 64 好像是2的幂次方就不满足,再多枚举一点试试 
//i<=1000中不能用至少两个连续的正整数相加的是4 8 16 32 64 128 256 512
//i<=10000,4 8 16 32 64 128 256 512 1024 2048 4096 8192       跑了75s出结果 

平方差(C/C++组):

这题之前已经写了一篇很详细的题解,还包括平方差结论,平方差结论拓展的补充题目,下面直接附上链接

题解链接:

第十四届蓝桥杯 2023 C/C++组 平方差-CSDN博客

蓝桥村的真相(Python组):

题目描述:

题目链接:

P11003 [蓝桥杯 2024 省 Python B] 蓝桥村的真相 - 洛谷

蓝桥村的真相 - 蓝桥云课

思路详解:

这题不像之前几题那样暴力前100项找规律,因为确实满足要求的判断也比较难写。实际这题是直接通过分析来找规律的,分析过程看草稿纸图片

代码详解:

#include<bits/stdc++.h> //蓝桥杯常考的找规律题,数据范围n<=10^18非常大,暴力一定超时,一定要找规律 
using namespace std;    //这题不像之前几题那样暴力前100项找规律,因为确实满足要求的判断也比较难写 
                        //实际这题是直接通过分析来找规律的,分析过程看草稿纸图片 
const int T=1e5+10;
const long long N=1e18+10;

int t;

int main()
{
	cin>>t;
	while(t--)
	{
		long long n;
		scanf("%lld",&n);
		if(n%3==0)                //当n能整除3时,答案为2*n 
		{
			printf("%lld\n",2*n);
		}
		else                      //当n不能整除3时,答案为n 
		{
			printf("%lld\n",n);
		}
	}
	return 0;
}

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

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

相关文章

MySQL_MCP_Server_pro接入cherry_studio实现大模型操作数据库

大模型直接与数据库交互&#xff0c;实现基本增删改查操作。首先贴下代码地址&#xff1a; https://github.com/wenb1n-dev/mysql_mcp_server_pro 安装环境&#xff1a;win10 1、下载代码 git clone https://github.com/wenb1n-dev/mysql_mcp_server_pro 2、使用conda创建…

Spark-Streaming

WordCount案例 添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"…

transformer 子层连接结构

子层连接结构 目标 了解什么是子层连接结构掌握子层连接结构的实现过程 什么是子层连接结构? 输入到每个子层以及规范化层的过程中, 使用了残差连接(跳跃连接, 从Add&Norm -> Add&Norm), 因此我们把这一部分结构整体叫做子层连接(代表子层及其链接结构), 在每个…

linux oracle 19c 静默安装

oracle数据库有个比较很抓瞎的事情&#xff0c;不同的版本搭建的大致流程是一样的&#xff0c;但是在实操细节上会有不同&#xff0c;比如操作的脚本位置和配置项等等&#xff0c;这些会变&#xff0c;所以需要时常积累不同版本的文档 这里有一点要说明&#xff0c;之所以使用…

C++ 的 输入输出流(I/O Streams)

什么是输入输出流 C 的输入输出操作是通过 流&#xff08;stream&#xff09; 机制实现的。 流——就是数据的流动通道&#xff0c;比如&#xff1a; 输入流&#xff1a;从设备&#xff08;如键盘、文件&#xff09;读取数据 → 程序 输出流&#xff1a;程序将数据写入设备&…

电子电器架构 --- DFMEA设计失效模式和后果分析

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

Apache SeaTunnel:新一代开源、高性能数据集成工具

Apache SeaTunnel 是一款开源、分布式、高性能的数据集成工具&#xff0c;可以通过配置快速搭建数据管道&#xff0c;支持实时海量数据同步。 Apache SeaTunnel 专注于数据集成和数据同步&#xff0c;主要旨在解决数据集成领域的常见问题&#xff1a; 数据源多样性&#xff1a…

python+selenium+pytest自动化测试chrome driver版本下载

chrome浏览器chromedriver版本下载地址 https://googlechromelabs.github.io/chrome-for-testing/#stable

3.1 WPF使用MaterialDesign的介绍1

MaterialDesignInXAML Toolkit 是一个流行的开源 C# WPF 控件库,它实现了 Google 的 Material Design 规范,让开发者可以轻松创建现代化的 WPF 应用程序界面 Material Design 是一个流行的设计语言,由 Google 开发,旨在帮助开发者构建美观且一致的 UI 界面。对于使用 C# 的…

从 0 到 1 打通 AI 工作流:Dify+Zapier 实现工具自动化调用实战

一、引言&#xff1a;当 AI 遇到工具孤岛 在企业数字化转型的浪潮中&#xff0c;AI 工具的应用早已从单一的对话交互进阶到复杂的业务流程自动化。但开发者常常面临这样的困境&#xff1a;本地开发的 MCP 工具&#xff08;如 ERP 数据清洗脚本、CRM 工单系统 API&#xff09;如…

Spring Boot中`logging.config`配置项的详解及使用说明

以下是Spring Boot中logging.config配置项的详解及使用说明&#xff1a; 1. logging.config 作用 功能&#xff1a;指定自定义日志配置文件的路径&#xff0c;覆盖Spring Boot默认的日志配置。适用场景&#xff1a;当需要深度定制日志行为&#xff08;如输出格式、文件路径、…

相机模型--CMOS和CCD的区别

1--CMOS和CCD的工作原理 CCD&#xff08;Charge Coupled Device&#xff0c;电荷耦合器件&#xff09;&#xff1a; 1. 图像通过光电效应在感光单元中转化为电荷&#xff1b; 2. 每个像素上的电荷被依次“耦合”并传输到芯片的角落&#xff0c;通过一个或几个模拟输出放大器输…

el-date-picker时间范围 赋值报错问题

问题&#xff1a; 点击时间范围组件右边清除图标&#xff0c;点击近6小时会把设置好的时间赋值给时间范围组件 但是出现报错 原因&#xff1a; 尝试对null值进行属性设置操作&#xff1a;修改一个数组的元素&#xff0c;但此时这个数组是null&#xff0c;而不是预期的数组类型…

为啥低速MCU单板辐射测试会有200M-1Ghz的辐射信号

低速MCU&#xff08;如8位或16位单片机&#xff09;单板在辐射测试中出现 200MHz~1GHz的高频辐射信号&#xff0c;看似不合理&#xff0c;但实际上是由多种因素共同导致的。以下是详细原因分析及解决方案&#xff1a; 1.根本原因分析: (1) 时钟谐波与开关噪声 低速MCU的时钟谐…

【音视频】FFmpeg解封装

解封装 复用器&#xff0c;比如MP4/FLV 解复用器&#xff0c;MP4/FLV 封装格式相关函数 avformat_alloc_context(); 负责申请一个AVFormatContext结构的内存,并进行简单初始化avformat_free_context(); 释放该结构里的所有东西以及该结构本身avformat_close_input();关闭解复…

OpenLDAP 管理 ELK 用户

文章目录 一、新建 ELK 相关用户组二、配置 Elasticsearch2.1 修改 elasticsearch.yml 配置2.2 使用 API 接口建立角色和用户映射 三、Kibana 验证用户登录 一、新建 ELK 相关用户组 由于后续要将 LDAP 的用户与 ELK 的角色进行映射&#xff0c;所以需先创建几个以 ELK 的角色…

第十七届“华中杯”大学生数学建模挑战赛题目A题 晶硅片产销策略优化 完整成品 代码 模型 思路 分享

近年来&#xff0c;高纯度晶硅片需求的增长引发了更激烈的市场竞争。晶硅片企业需要在成本控制、利润优化和供需管理之间取得平衡&#xff0c;以提高经营效率和市场竞争力。晶硅片的生产是一个高能耗、高成本的过程&#xff0c;企业效益会受到原材料价格波动、市场需求变化以及…

网络层理解

网络层理解 网络层是 OSI 模型的第三层&#xff0c;主要负责 跨网络的数据传输&#xff0c;核心任务是 路由选择 和 分组转发。 网络层核心功能 网络层关键协议 协议作用示例IP (IPv4/IPv6)数据包路由和寻址192.168.1.1ICMP网络状态检测和错误报告ping、tracerouteOSPF/BGP动…

从Archery到NineData:积加科技驱动数据库研发效能与数据安全双升级

积加科技作为国内领先的企业级数字化解决方案服务商&#xff0c;依托自研的 A4X 数字化平台&#xff08;https://a4x.io/&#xff09;&#xff0c;专注于为全球范围内的视觉物联网&#xff08;IoT&#xff09;设备提供 PaaS/SaaS 服务。致力于运用 AI 技术赋能物联网世界的各类…

开源Midjourney替代方案:企业级AI绘画+PPT生成系统+AI源码

「AI取代设计师&#xff1f;」开源Midjourney替代方案&#xff1a;企业级AI绘画PPT生成系统 ——零代码私有化部署&#xff0c;5倍速出图100%版权合规 设计师行业的危机与机遇 1. 传统设计流程的致命短板 痛点 人工设计 AI系统 单张海报耗时 3小时&#xff08;含反复修改…